日期:2014-05-18  浏览次数:21082 次

如何提高转换精度start.X = float.Parse(code.Value);
code.Value=3493784.654397;
start.x=3493784.75;
精度太差了,有人知道有更好的转换,还想换成float, 是否可能精确到3493784.654,否侧的话,只能转换成 double 了,那我的改动就太多了。谢谢!

------解决方案--------------------
float只有4个字节,有效数字只有6~7位,所以能精确到个位就已经不错了,已经是7个有效数字了,小数点后第一位是第八个有效数字,float无法表示,所以第八个有效数字位肯定是不精确的,

你需要的3493784.654有10个有效数字,float无法达到这个精度,只能用double,double有15~16个有效数字,

这不是Parse导致的问题,而是float字节数太少无法表示10个有效数字,你只能改为double,