浮动到双倍转换变化值

时间:2015-01-30 12:10:12

标签: c# casting type-conversion

我有一个带有一些值的float类型的变量,并且有一个点将该值转换为double类型变量,此时float变量中的值不再是我在double类型变量中看到的值。为了使这个例子易于理解,我在即时窗口中执行此操作以产生最新情况:

(double)float.Parse ( "-0.00146256")

给了我-0.001462560030631721

“-0.00146256”(在一个字符串中)是这个值的原点,它存放在一个浮点数中,浮点数与浮点数一起放在代码中的某个位置,然后在稍后的位置转换为加倍。

为什么值在double变量中更改为不同的值,我该怎么做才能防止这种非精确行为?

1 个答案:

答案 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");