设定精度c#

时间:2018-06-10 01:42:32

标签: c# rounding precision

是否可以为项目中包含的所有双值在c#中设置double值的精度?我有很多价值观,用Math.Round改变它们会让人筋疲力尽。我需要将双值设为5.12345,而不是5.123455123321321。

1 个答案:

答案 0 :(得分:2)

这是floating point类型的基本限制。double实际上是作为符号指数和尾数存储在内部,指数是基数2,因此在处理基数10时遇到很多麻烦。 。

最简单的解决方案是使用基本10 64位浮点类型,即decimal。它仍然是浮动点,它仍然只有有限的精度,但在很多情况下它很友好,更准确

<强>更新

如果您要做的只是更改显示输出,您可以使用舍入(您知道),或使用string.format ToString或字符串插值的相应format specifiers

示例

var number = 5.123455123321321;
Console.WriteLine(number.ToString("F3", 
                  CultureInfo.InvariantCulture));
Console.WriteLine($"{number:F3}");
// Displays 5.123
// Displays 5.123