C#使用float类型进行计算的时候出错,难道是精度原因?详情见调试
一个本来应该得到205.0的数却得到了204.999985的结果
于是我在调试的时候用几种方法算了一下,结果是这样的
首先说明里面的参数
arraylist对应的那个值为8.2

如果不用(float)会说缺少强制转换

然后YSlice的值是0.4

所以82/0.4的结果应该是20.5

但是*10以后结果本应该是205.0,却成了204.999985

我直接把8.2/0.4的结果拿来*10又没有问题,说明问题出在8.2/0.4*10上

直接/0.4也是不对的,说明不是变量引用的问题

直接*25也没有问题

*10/0.4也出现问题,说明就是这两个一起的时候会有问题

这种情况该怎么解决啊
于是我在调试的时候用几种方法算了一下,结果是这样的
首先说明里面的参数
arraylist对应的那个值为8.2

如果不用(float)会说缺少强制转换

然后YSlice的值是0.4

所以82/0.4的结果应该是20.5

但是*10以后结果本应该是205.0,却成了204.999985

我直接把8.2/0.4的结果拿来*10又没有问题,说明问题出在8.2/0.4*10上

直接/0.4也是不对的,说明不是变量引用的问题

直接*25也没有问题

*10/0.4也出现问题,说明就是这两个一起的时候会有问题

这种情况该怎么解决啊
...全文
相关推荐
C#中float的取值范围和精度分析
本文实例分析了C#中float的取值范围和精度。分享给大家供大家参考。具体分析如下: float类型的表现形式: 默认情况下,赋值运算符右侧的实数被视为 double。 因此,应使用后缀 f 或 F 初始化浮点型变量,如以下示例中所示: float x = 3.5F; 如果在以上声明中不使用后缀,则会因为您尝试将一个 double值存储到 float 变量中而发生编译错误。 float的取值范围 float占用4个字节,和int是一样,也就是32bit. 1bit(符号位) 8bits(指数位) 23bits(尾数位) 存储方式如下图: 取值范围基本表达法 (浮点)数值 = 尾数 × 底数
数据库 数据类型float到C#类型decimal, float数据类型转化无效
数据库 数据类型float到C#类型decimal, float数据类型转化无效的解决方法
C# 按照IEEE 754标准对Float和Double类型进行转换
Convertor按照IEEE 754标准对Float和Double类型进行转换
float double精度的详细解释
float double精度的详细解释,小数点位数等等
c#中decimal ,double,float的区别.doc
c#中decimal ,double,float的区别.doc


