Độ chính xác được đảm bảo của toán tử nhân cho giá trị kép trong java là bao nhiêu? Ví dụ: 2.2 * 100 là 220.00000000000003, nhưng 220 là số kép. 220,00000000000003 là đôi tiếp theo sau khi 220.Độ chính xác của phép nhân đôi chính xác trong java?
Trả lời
Các nhân đang làm việc tốt, nhưng 2.2
không thể được đại diện chính xác như một đôi. Nội dung đôi nam gần nhất là:
- 2,199999999999999733 (0x4001999999999999)
- 2,200000000000000177 (0x400199999999999a)
Một số phần mềm sẽ in giá trị sau khi 2.2
, nhưng điều đó không có nghĩa là nó chính xác. Nó chỉ có nghĩa là nó được coi là "đủ gần".
cảm ơn, tôi nhầm lẫn giả định rằng thực tế println in 2,2 có nghĩa là nó là chính xác –
Nếu bạn đang làm việc với các dữ liệu tài chính không sử dụng float or double
chỉ cần sử dụng java.math.BigDecimal
cảm ơn nhưng đây không phải là câu hỏi tôi đã hỏi –
Bạn hỏi về nhiều lần, hãy thử thực hiện thao tác tương tự nhưng chỉ sử dụng BigDecimal và vấn đề của bạn sẽ được giải quyết. –
câu hỏi của tôi là về tính chính xác của phép toán nhân, như tôi đã đọc trong [Điều mà mọi nhà khoa học máy tính nên biết về các số dấu phẩy động "] (http://download.oracle.com/docs/cd/E19957-01/806 -3568/ncg_goldberg.html) "Tiêu chuẩn IEEE yêu cầu kết quả phép cộng, trừ, nhân và chia được làm tròn chính xác. Tức là, kết quả phải được tính chính xác và sau đó được làm tròn đến số dấu phẩy động gần nhất (sử dụng vòng tới thậm chí). ", Tôi đã rất ngạc nhiên khi nhận được câu trả lời mà tôi đã không mong đợi. @duskwuff giải thích dưới đây tại sao điều này xảy ra. –
- 1. Java - mất tối đa độ chính xác trong một phép cộng/trừ đôi
- 2. OpenCL đôi độ chính xác khác nhau từ CPU chính xác đôi
- 3. Độ chính xác gấp đôi mở rộng
- 4. Cách chính xác để nhân đôi đối tượng Delphi
- 5. Chuỗi C++ để nhân đôi chuyển đổi mất chính xác?
- 6. độ chính xác chiều sâu opencv độ chính xác
- 7. Độ chính xác của CLLocation chính xác đến mức nào?
- 8. Format độ chính xác gấp đôi trong PostgreSQL
- 9. Độ chính xác của Cython
- 10. Tại sao độ chính xác tùy ý trong các chữ cái kép được phép trong Java?
- 11. mất bất ngờ độ chính xác khi chia đôi
- 12. Java chính xác đôi với -hằng/bộ phận
- 13. Mất chính xác với đôi C++
- 14. Hệ thống con nhân của bộ nhân Linux: Độ chính xác và độ phân giải
- 15. Độ chính xác trong python
- 16. Độ chính xác của MediaPlayer.seekTo (int msecs)
- 17. Độ chính xác độ cao CLLocation
- 18. Điều gì làm tăng độ chính xác và độ chính xác theo chiều dọc của CLLocation?
- 19. C# vấn đề chính xác gấp đôi
- 20. Cách đặt độ chính xác của phao
- 21. Thư viện có độ chính xác cao điểm nổi Java
- 22. chính xác của Math.random()
- 23. Tọa độ GPS chính xác
- 24. đôi trừ đôi cho vấn đề chính xác
- 25. Độ chính xác ngày giờ?
- 26. Nhân viên của appharbor là gì ... chính xác?
- 27. Biểu diễn văn bản chính xác của IEEE "đôi"
- 28. Độ chính xác nội bộ của numpy.float128 là gì?
- 29. Tính chính xác của hẹn giờ trong java
- 30. Độ chính xác hẹn giờ OpenVMS, tốt hơn độ chính xác mili giây.
Daba: nó phụ thuộc vào số multiplicating của bạn, thấy cách số dấu chấm động được thực hiện trong Java (và trong hầu hết các ngôn ngữ). Các số dấu chấm động trong Java chủ yếu là IEEE-754. Tôi đề nghị đọc hấp dẫn sau đây: * "Mọi nhà khoa học máy tính nên biết gì về các số dấu phẩy động" * http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html Lưu ý " nhà khoa học "trong tên: nếu bạn không thực hiện tính toán khoa học, bạn có thể sai nếu bạn sử dụng các số dấu phẩy động. – SyntaxT3rr0r
- tắt bởi một ulp! – Atreys