我有一个带有一些值的float类型的变量,并且有一个点将该值转换为double类型变量,此时float变量中的值不再是我在double类型变量中看到的值。为了使这个例子易于理解,我在即时窗口中执行此操作以产生最新情况:
(double)float.Parse ( "-0.00146256")
给了我-0.001462560030631721
“-0.00146256”(在一个字符串中)是这个值的原点,它存放在一个浮点数中,浮点数与浮点数一起放在代码中的某个位置,然后在稍后的位置转换为加倍。
为什么值在double变量中更改为不同的值,我该怎么做才能防止这种非精确行为?
答案 0 :(得分:1)
这是假设工作的方式。微软说
This type is useful for applications that need large numbers but do not need precise accuracy. If you require very accurate numbers, consider using the Decimal data type.
您可以先强制转换为小数,然后再加倍:
double d = (double)(decimal)float.Parse("-0.00146256");