请查看这两个简单代码以及输出中的差异。
using System;
namespace _02.CircleArea
{
class CircleArea
{
static void Main(string[] args)
{
double inputR = double.Parse(Console.ReadLine());
double circleArea = Math.Round((Math.PI * inputR * inputR), 12);
Console.WriteLine("{0}", circleArea);
}
}
}
输入123.456,输出为47882.2198038791
这样做的方式是:
using System;
namespace _02.CircleArea
{
class CircleArea
{
static void Main(string[] args)
{
double inputR = double.Parse(Console.ReadLine());
double circleArea = (Math.PI * inputR * inputR);
Console.WriteLine("{0:F12}", circleArea);
}
}
}
使用相同的输入123.456,可以得到不同的输出47882.219803879100
为什么占位符舍入和Math.Round舍入结果之间有区别?
最佳答案
Math.Round
实际上为您提供了一个新的数值,而使用格式代码只会显示一个四舍五入的值。由于您在第二个格式字符串中指定了12位精度,但未在第一个格式字符串中指定精度,因此它给您尾随零。
我会注意到数字格式总是四舍五入,而Math.Round
默认情况下四舍五入为最接近的偶数。
关于c# - 为什么在C#中Math.Round舍入和占位符舍入之间有何区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39734829/