涉及双精度数的计算
Computations involving double numbers
对于下面的代码,为什么cellSide的值不是0.8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
/*****Additional info *******
*#define RADIUS 4
*double cellSide = 0.0 ;
*int iCelleParameter=10;
*****************************/
cellSide = 2 * RADIUS / (double)iCelleParameter;
浮点数和双精度数不能总是准确地表示数字,所以有时它们有点偏差。 对于货币类型值,它可以工作,因为您可以四舍五入到最接近的两位数。
例如,如果您将值设置为 0.1,它可能会说 0.0999999999 或 0.100000000001(我不确定它到底是什么,只是它会偏离一点点)。 这对于浮点数和双精度数是正常的。
更新:上面更新了,因为有人指出我的原始 2.0 示例可以准确表示,但 0.1 是一个无法准确表示的数字示例。
相关文章:
- Fmod 函数清楚地输出一个预期的双精度值,但 if(fmod == 预期的双精度值)的计算结果不是 true
- 为什么 2 个双精度值之间的差值计算错误?
- 如何使用 2 个迭代器进行求和函数计算映射<字符串、双精度>
- 如何在 C/C++ 中有效地计算双倍到两个小数点精度
- 通过更改代码格式来计算结构向量中包含的双精度变量的平均值的不同结果?
- C++ [链接器错误] 未定义对"执行计算(字符,双精度)"的引用
- 小数点后的数字,用于双精度变量/C++计算
- 如何计算双精度/浮点C++中的位数
- 涉及双精度数的计算
- c++ 如何计算涉及双精度数据类型模数的数学表达式
- 用C++计算小双精度数时出错
- 为什么我所有的双精度计算都在循环中给出相同的结果
- 用双精度计算 pow 会给出错误的结果
- c++ linux x86_64中如何控制双精度计算以避免舍入误差
- 在不切割变量的情况下计算双精度
- 在计算双精度值期间,错误计数增加
- 计算双精度数组中所有元素的和
- 按降序计算双精度
- 使用EXPECT_EQ计算双精度或浮点数的和时出错
- 浮点计算给出的结果与使用双精度计算的结果不同