Tôi nhận được kết quả sai khi sử dụng phương pháp bên dưới.Nhận kết quả sai để đánh giá 100 * 2.55 giá trị
public double evaluate(final double leftOperand, final double rightOperand) {
Double rtnValue = new Double(leftOperand * rightOperand);
return rtnValue.doubleValue();
}
Nhập giá trị thông số là: leftOperand = 100 và rightOperand = 2,55
Tôi nhận được câu trả lời sai: 254,99999999999997
Câu trả lời đúng là một 255,0
buộc "Tất cả những gì khoa học máy tính nên biết về Floating-Point Arithmetic" -Link: http://docs.sun.com/source/806-3568/ncg_goldberg.html – Jacob
gì * chính xác * giá trị làm bạn tin rằng giá trị của bạn "2.55" có? –
@JonSkeet: Ngay cả khi bạn biết giá trị chính xác của cả hai 2,55 và 100,0, câu trả lời sẽ là sai ... –