ASP乘法和除法运算,保留小数的有关问题

ASP乘法和除法运算,保留小数的问题。


Dim a
Dim b
a = 310
b = 2556
c = b/a
Response.Write(c)




算出来C = 8.24516129032258

但是在一般情况下,大家都不会保留这么长的小数位,如果按money字段,保留4位小数字 C=8.2452 (四舍五入)

再用C=8.2452*310=2556.012 跟原始的B又不同。

一般这样的情况有什么办法在尽可能保留少的小数位的同时,能让等式成立。
------解决思路----------------------
只记录总价
c = b/a  不需要写出来 有逻辑就可以

因为 只记录 a b 就知道了c

最后有误差  自己定一个误差的小数长度 对代码不会有改动影响

最后 匹配验证数据的时候 允许一个合理的误差 比如 +-1
------解决思路----------------------
引用:


Dim a
Dim b
a = 310
b = 2556
c = b/a
Response.Write(c)




算出来C = 8.24516129032258

但是在一般情况下,大家都不会保留这么长的小数位,如果按money字段,保留4位小数字 C=8.2452 (四舍五入)

再用C=8.2452*310=2556.012 跟原始的B又不同。

一般这样的情况有什么办法在尽可能保留少的小数位的同时,能让等式成立。


一般情况没人会再用c * a去计算b,而是直接用b,因为c是通过b算出来的
------解决思路----------------------
a = 310
b = 2556
c = round(b/a)  '8.2452 保留4位小数
Response.Write(round(c*a)) '2556 并没有误差

------解决思路----------------------
一般来说,四舍五入的数字最后对还原的数据有一些小小的影响。只要对lz里面的B变量检测是否有小数,如果有小数,有效位是多少。然后保留同样的类型,就可把四舍五入的影响减低。
------解决思路----------------------
要无限接近,只能可能多的保留小数位,然后最后输出时才四舍五入,但误差是避免不了的