これらの2つの簡単なコードと出力の違いを見てください。それは別の出力を与える同じ入力123.456でなぜC#ではMath.Roundの丸めとプレースホルダの丸めの違いがありますか?
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);
}
}
}
:
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
そして、それをやっての方法です47882.219803879100
プレースホルダ丸めとMath.Round丸め結果の違いは何ですか?
@CodeCaster:この質問で説明した相違点はここでは見られません。 –
{0}から取得するデフォルトの書式設定では、表示される結果の有効数字が15桁を超えないようにします。 moreを表示するのはナンセンスなので、* double *型はその多くの桁を格納できません。その仮数には53ビットを使用し、2^53個の異なる値しか表現できません。 F12を使用するとナンセンスルールを無効にし、17桁を取得します。最後の2つはランダムノイズですが、あなたは0であることは不運です。それは事故であることがあります。 –