Nếu tôi viết mã trong C++:C++ đôi để lâu dài
long long d = 999999998.9999999994;
cout<<d;
tôi nhận được kết quả: 999999999
(làm tròn lên)
Nhưng đầu ra của mã này:
long long d = 999999998.9999994994;
cout<<d;
là 999999998
(làm tròn)
Có liên quan gì đến độ chính xác không. Có cách nào tôi có thể thay đổi độ chính xác. Chức năng floor()
cũng cho ra cùng một đầu ra.
Tôi cũng nhận thấy rằng nếu tôi gán giá trị 8.9999994994
hoặc 8.9999999994
-d
(trên biến). Đầu ra là 8
.
Bạn có thể thêm rõ ràng 0,5 và truyền gấp đôi thành dài. –
Hỗ trợ C++ 11? Các chữ cái do người dùng định nghĩa có thể hữu ích. – Yakk
@OleksandrVerhun Bạn có thể làm điều này, nhưng nếu mục tiêu của bạn là làm tròn số dấu phẩy động đến số nguyên gần nhất, bạn không nên làm điều này. http://blog.frama-c.com/index.php?post/2013/05/02/nearbyintf1 –