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);
}
}
}
: 123.456 출력의 입력에
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);
}
}
}
은 47882.2198038791
하고 일의 방법 47882.219803879100
자리 표시 자 반올림과 Math.Round 반올림 결과의 차이점은 무엇입니까?
@CodeCaster :이 질문에서 논의 된 차이점은 여기서 관찰되지 않습니다. –
{0}에서 가져 오는 기본 서식은 표시된 결과의 유효 자릿수가 15자를 초과하지 않도록합니다. 더 많은 것을 표시하는 것은 말도 안되기 때문에, * double * 타입은 그 많은 숫자를 저장할 수 없습니다. 53 비트를 사용하여 2^53 고유 값 만 표현할 수 있습니다. F12를 사용하면 난센스 규칙을 무시하고 17 자리를 얻습니다. 마지막 두 개는 무작위 소음이며, 0 점은 불행한 일입니다. 일어날 수있는 것은 사고입니다. –