gpt4 book ai didi

c# - 为什么 C# 中的 Math.Round 舍入和占位符舍入之间存在差异?

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:17 25 4
gpt4 key购买 nike

请查看这 2 个简单的代码以及输出的差异。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com