를 할 때 :matlab에 반올림 계산 오류의 MATLAB 2014b에서
round((0.1:0.2:1)/0.2)
내가 얻을 :
1 2 3 3 5
대신 같은 이상한 계산 문제를 해결하는 방법이 있나요
1 2 3 4 5
의? 왜 이런 일이 일어나는가? 왜 그렇게 이상한가요? 이 값은
n=0.2
뿐만 아니라 다른 값에 대해서도 반복됩니다.
편집 : 복제본을 확인했지만 ceil
을 사용할 때 시나리오가 변경되므로 부동 소수점 임계 값이 반 정수 (0.5, 1.5, 2.5)가 아닌 정수 (1.0, 2.0, 3.0)로 표시됩니까? single
같은 다른 표현을 사용하면 어떨까요? 아니면 다른 어떤 예측 가능한가?
'round ((0.1 : 0.2 + eps : 1) ./ 0.2)' – bla
부동 소수점 정확도에 익숙 ... – bla
['ceil'] (https://www.mathworks.com) /help/matlab/ref/ceil.html) 대신'round'를 사용하십시오. – gnovice