두 수의 0.99 일 같은과를 고려하고 난 -0.01 동일 그 결과를 무엇을 할 수뺄셈 두 플로트 번호의 C#의 결과
float s = 0.99f - 1f;
Console.WriteLine(s.toString());
result is : -0.0099999
내가 C#에서이 번호를 서브를 원하십니까?
두 수의 0.99 일 같은과를 고려하고 난 -0.01 동일 그 결과를 무엇을 할 수뺄셈 두 플로트 번호의 C#의 결과
float s = 0.99f - 1f;
Console.WriteLine(s.toString());
result is : -0.0099999
내가 C#에서이 번호를 서브를 원하십니까?
시도해보십시오.
decimal d = 0.99m - 1m;
Console.WriteLine(Math.Round(d, 2));
컴퓨터는 분수를 완벽하게 나타낼 수 없습니다. 그들은 그것들을 단지 근사 할 수 있습니다. 그래서 당신은 -0.01이 아닌 -0.0099999를 보았습니다.
가까운 근사값이 필요한 경우 일반적으로 임의의 정밀도 유형을 사용하고 해당하는 곳에 반올림합니다. 통화의 가장 일반적인 반올림은 어느 방향 으로든 결과를 크게 왜곡하지 않으므로 은행가 반올림입니다.
은 참조 :
부동 소수점 숫자는 종종 근사치입니다. 책임있는 방식으로 컴퓨터에서 부동 소수점 숫자를 사용하는 방법에 관한 전체 분야의 연구가 있으며, 나를 믿어도 사소한 것은 아닙니다!
대부분의 프로그래머는 부동 소수점 숫자를 사용하여 얻은 작은 편차에 대해 코드가 '강력 함'을 유지하는지 확인합니다.
잘못된 :
if (my_float== -0.01)
오른쪽 :
if (my_float>= -0.00999 && my_float<=-0.01001)
(숫자는 단지 예로서 있습니다).
정확한 숫자가 필요한 경우 다음과 같이 입력하십시오. 정수를 사용하십시오. 반올림을 사용할 수는 있지만 결과가 더 신뢰할 수 없으므로 중간 계산이 완료되지 않았습니다. 반올림은 보통 최종 결과를 인쇄 할 때 발생합니다. 좋은 엔지니어로서 결국에는 얼마나 많은 숫자가 관련이 있는지를 알아야합니다.