如何从 C# 中的双精度值 trim 十进制
How to trim decimal from double value in c#
我正在尝试从 c# 中的 1719.4703776041661 双精度值中删除最后一位。我想只有 12 位数的双精度值。我怎样才能做到这一点?
尝试了以下操作,但仍然得到与输入相同的值(13 位数字)。
Math.Round(1719.4703776041661, 12) // Same Result with 13 digits
double.parse(value.ToString("N12"))
您遇到了精度问题。检查这个:
double d = 1719.4703776041849;
放置一个断点并检查存储在d
中的值,你会惊讶它不匹配。这是因为该数字需要比 double
提供的精度更高的精度。
如果您需要这样的精度,那么您必须使用 decimal
而不是 double
。这将起作用:
decimal d = 1719.4703776041661M; //Need the M suffix to denote a decimal value.
var z = Math.Round(d, 12); //It returns 1719.470377604166
我正在尝试从 c# 中的 1719.4703776041661 双精度值中删除最后一位。我想只有 12 位数的双精度值。我怎样才能做到这一点?
尝试了以下操作,但仍然得到与输入相同的值(13 位数字)。
Math.Round(1719.4703776041661, 12) // Same Result with 13 digits
double.parse(value.ToString("N12"))
您遇到了精度问题。检查这个:
double d = 1719.4703776041849;
放置一个断点并检查存储在d
中的值,你会惊讶它不匹配。这是因为该数字需要比 double
提供的精度更高的精度。
如果您需要这样的精度,那么您必须使用 decimal
而不是 double
。这将起作用:
decimal d = 1719.4703776041661M; //Need the M suffix to denote a decimal value.
var z = Math.Round(d, 12); //It returns 1719.470377604166