C#双号问题

C#双号问题,c#,.net,double,rounding,C#,.net,Double,Rounding,我有一个奇怪的问题,就是在C#中使用双数。NET这是我的测试: double my_value = 0.49; 问题是显示的变量值是0.48999999999999,我不需要使用Math.Round()函数显示0.49;我需要准确地存储这个值 谢谢。欢迎使用浮点精度。如果需要更高的精度,请使用decimal类型 decimal my_value = 0.49m; 如果您想了解更多关于为什么会这样的信息,我建议您阅读本文-当您需要使用精确值时,不要使用double类型。这是decimal类型的

我有一个奇怪的问题,就是在C#中使用双数。NET这是我的测试:

double my_value = 0.49;
问题是显示的变量值是0.48999999999999,我不需要使用
Math.Round()
函数显示0.49;我需要准确地存储这个值


谢谢。

欢迎使用浮点精度。如果需要更高的精度,请使用
decimal
类型

decimal my_value = 0.49m;

如果您想了解更多关于为什么会这样的信息,我建议您阅读本文-

当您需要使用精确值时,不要使用
double
类型。这是
decimal
类型的域

decimal my_value = 0.49m;
改为使用,
double
is

有用的链接


始终有用的链接。。。如果您查看链接问题中的答案,最好使用
Decimal
类型。但是,请注意!Double可能“看起来”不好,但如果你用这个值进行大量计算,它会精确得多。然而,如果您只是简单地存储它或使用它进行简单的加法/减法计算,那么十进制将很好地为您服务。@BinaryWorrier-取决于什么类型的计算。例如,在财务计算中,使用double将是一个可怕的错误。对于物理学中的计算,双精度是完美的,十进制是错误的。@BinaryWorrier-我需要为paypal结账保存项目价格,在另一个网站上,我不必处理十进制,因此循环使用代码并发现错误。我不需要做任何计算,所以我想我可以选择十进制来传递价格。@Corak:取决于财务计算的类型。多年来,我为精算师编写了预测软件,将保险/保证政策汇总了几十年。在预计学期结束之前,对这些数值进行了数十万次的计算。开始时的小舍入误差可能导致结束时的大差异。如果使用十进制类型,最终的数字将毫无意义。不幸的是,一个大小并不适合所有大小:)十进制不是固定精度,因为小数点的数字和位置都在数字中编码。只是Decimal类型比Float或Double类型精度更高。@roadwarm您是对的,当然,我已经更新了它。
decimal my_value = 0.49m;