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