>  기사  >  백엔드 개발  >  C#의 부동 소수점 계산 문제 해결

C#의 부동 소수점 계산 문제 해결

黄舟
黄舟원래의
2017-09-20 11:05:182048검색

당신의 산술 능력을 테스트할 계산 문제를 보여 드리겠습니다.

0.1 +0.1 +0.1 - 0.3은 무엇과 같나요?

이렇게 간단한 질문을 하셔도 저를 무시하시나요? 0과 같아야 합니다.

직접계산하면 문제없지만, 컴퓨터로 하면 어떨까요?

기적을 목격할 시간이 왔습니다. 코드를 보세요:


void Main()
{    var f = 0.1 +0.1 +0.1 -0.3;
    Console.WriteLine("f=={0}",f);
}

실행 결과:

이것은 컴퓨터의 정확성, 컴퓨터의 정밀도 부족 때문입니다. 컴퓨터 내부 저장소 및 작동 등에 대한 설명이 명확하지 않을 수 있지만 다음 해결 방법을 사용하여 해결할 수 있습니다.


void Main()
{    //var f = 0.1 +0.1 +0.1 -0.3;    //Console.WriteLine("f=={0}",f);
    
    var f1 = new Decimal(0.1) + new Decimal(0.1) + new Decimal(0.1) - new Decimal(0.3);
    Console.WriteLine("f1 == {0}",f1);
}

작업 결과:

이것은 정상적인 작동 결과입니다.

라라라! ! ! !

위 내용은 C#의 부동 소수점 계산 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.