Tôi hiện đang kinh ngạc hơn này:chính xác sự khác biệt khi in Python và C++ đôi
C++ 11
#include <iostream>
#include <iomanip>
#include <limits>
int main()
{
double d = 1.305195828773568;
std::cout << std::setprecision(std::numeric_limits<double>::max_digits10) << d << std::endl;
// Prints 1.3051958287735681
}
Python
>>> repr(1.305195828773568)
'1.305195828773568'
gì đang xảy ra, tại sao thêm 1 trong C++?
Cho đến nay tôi nghĩ rằng C++ và Python sử dụng cùng một IEEE 64 bit đôi dưới mui xe; cả hai chức năng định dạng có nghĩa vụ phải in chính xác đầy đủ.
Lưu ý rằng * thuộc tính * của 'repr' là: 'eval (repr (x)) == x' ** không ** số đó được in với tất cả các chữ số thập phân. Nếu bạn muốn có độ chính xác của chữ số thập phân 'k', bạn nên sử dụng một hàm định dạng thích hợp. – Bakuriu