C#에서 반올림 문제가 발생했습니다. 나는 소수점 이하 4 자리까지 계산 결과를 반올림하고 싶습니다. Math.Round (변수, ...)를 사용하면 수동으로 결과를 입력하면 반올림됩니다 .. 이유가 없습니다 ..C#에서 반올림 버그?
무엇이 잘못 되었나요? 아래 코드의 결과는 다음과 같습니다 둥근 : 591.24575 591.2457-591.2458
double number1 = 1136.81;
double number2 = 4.00;
double number3 = 2182.257;
double result = (number1 * number2 - number3)/4;
Console.WriteLine("Rounded: " +result+" " + Math.Round(result, 4, MidpointRounding.AwayFromZero) + " - " + Math.Round(591.24575, 4, MidpointRounding.AwayFromZero));
Console.ReadLine();
'double'은 (Round, Floor 등을 사용하여) 10 진수로 /에서 10 진수로 변환 할 때 100 % 정확하지 않은 2 진 부동 소수점 데이터 유형이기 때문입니다. base-10의 정밀도가 필요하다면'decimal'을 사용하십시오. –
프레임 워크 나 C#에 누군가가 기대하는 방식으로 작동하지 않는 버그가 있다는 가정을 언제나 매료시킵니다. –
@DanielKelley 공정하게 말하자면 사용자는 "나는 * 내가 * 잘못 했나요?"라고 말했습니다. – LarsTech