最近在做一套系统的时候,发现数据不对,原来是float的初始值已经被改变了。
float f1 =1543.56f;
调试跟踪的时候发现 f1 = 1543.5601了。
分析原因:
1.float 在初始化的时候进行了运算,是2e次幂。f1 = 2048.64f就不会有这个问题。
2.超出float 的精度的时候,float也会做出处理,使你的值被改变。
解决办法:
1.自定义数据结构体,如C# 的Decimal等
2.采用大数计算方法。
为此,总结网上朋友的一些经验,自己写了一个Decimal,仅供大家参数 使用