读书人

float long类型转换解决思路

发布时间: 2012-09-07 10:38:15 作者: rapoo

float long类型转换
昨天遇到一件事情觉得很奇怪,基本确定是类型转换引起的,
刚刚写了一小段测试一下果真如此(c#.net)
float a=8.15f;
long b= (long)(a*1000);

结果b=8149
又用其他几个值测试了一下,基本正常,但是当a*1000的最后一位是0时就会出现比预计值少1的情况

如 8150-8149
8160-8159
类推


谁知道是什么原因呢,如果是位数过多什么还能从类型的长度去考虑,现在很晕






[解决办法]
这篇文章好一点
Java中用浮点型数据Float和Double进行精确计算时的精度问题
http://www.cnblogs.com/n-u-l-l/archive/2012/05/12/2497063.html

C#也有同样问题,所有语言都有同样的问题,只要计算机是二进制的。

读书人网 >C#

热点推荐