请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
在C++(和C)中,没有后缀的浮点文字默认为double,而后缀f意味着a float.但是后缀是long double什么?
不知道,我会定义,比方说,
const long double x = 3.14159265358979323846264338328;
Run Code Online (Sandbox Code Playgroud)
但我担心的是变量x包含的有效位3.14159265358979323846264338328少于64,因为这是一个double文字.这种担心是否合理?
根据我的阅读,数据类型double的值具有小数点后15位的近似精度.但是,当我使用其十进制表示重复的数字,例如1.0/7.0时,我发现变量保持值为0.14285714285714285 - 这是17位(通过调试器).
我想知道为什么它在内部表示为17个位置,为什么15的精度始终写在〜15?