相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

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)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

什么是长双重文字的C++后缀?

在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文字.这种担心是否合理?

c c++ literals floating-point-precision

55
推荐指数
3
解决办法
4万
查看次数

双精度 - 小数位

根据我的阅读,数据类型double的值具有小数点后15位的近似精度.但是,当我使用其十进制表示重复的数字,例如1.0/7.0时,我发现变量保持值为0.14285714285714285 - 这是17位(通过调试器).

我想知道为什么它在内部表示为17个位置,为什么15的精度始终写在〜15?

c c++ precision ieee-754

37
推荐指数
6
解决办法
11万
查看次数