是否可以为项目中包含的所有双值在c#中设置双值的精度?我有很多价值观,用Math.Round来改变它们会让我精疲力竭。例如,我需要双倍值为5.12345而不是5.123455123321321。
发布于 2018-06-10 01:46:48
这是浮点类型的一个基本限制。double实际上是内部存储为符号指数和尾数,指数是基2,所以处理基数10有很多困难。
最简单的解决方案是使用基本的10 64位浮点类型,即decimal。它仍然是浮点,它仍然是有限的精度,但它是非常友好和更准确的工作在许多情况下。
更新
如果您只想更改显示输出,您可以使用舍入(您知道),也可以使用适当的格式说明符与string.format ToString或字符串内插。
示例
var number = 5.123455123321321;
Console.WriteLine(number.ToString("F3",
CultureInfo.InvariantCulture));
Console.WriteLine($"{number:F3}");
// Displays 5.123
// Displays 5.123https://stackoverflow.com/questions/50779916
复制相似问题