浮点型功能
Float type functionality
可能的重复项:
浮点数总和不精确
所以我有代码:
#include <iostream>
using std::cout;
using std::endl;
int main () {
float x = 0.0001;
float y = 0;
for (int i=0; i < 10000; i++) {
y += x;
}
cout << y << endl;
return 0;
}
我预计输出为 1,但我得到 1.00005,怎么来?我需要更改什么才能使"1"保持代码或多或少相同?
二进制浮点数不能精确地表示每个可能的十进制有理数。 如果不能,将发生舍入误差。 您会看到这些舍入误差的累积。
int main () {
int x = 1;
int y = 0;
for (int i=0; i < 10000; i++) {
y += x;
}
cout << y/10000.0 << endl;
return 0;
}
整数是精确的,浮点数通常不是。如果您需要精确性,不使用十进制库的最简单方法是将数学保留在整数域中,直到您需要它。
相关文章:
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 从.txt文件中读取浮点型数字并在公式中使用它们
- 将整型转换为浮点型时检测溢出
- C++ 中的程序集内联(浮点型和_cdecl型)
- 是否存在 x + 1 == x 类型的浮点型值 x
- 从浮点型到 int 的转换在所有平台和处理器架构中是否一致?
- NaN 在浮点型和双精度型之间的类型转换
- 无法将浮点型*类型转换为字符*
- 如何分别为整型和浮点型专门化模板函数
- 浮点型功能
- 将字符串拆分为 2 个向量.将字符串转换为浮点型时出现问题
- C++11 type_traits:若为浮点型,则为同一类型;若为整型,则为双类型
- 完全递增/递减浮点型数字
- 从浮点型到整数的奇怪转换
- 访问静态 constexpr 浮点型成员时的未定义引用
- 将浮点型数组转换为双精度型
- 如何为基本类型(浮点型)编写替换,以覆盖 运算符 == C++
- 如何使用 printf 查看浮点型变量
- 奇怪的,在窗口中传递函数的浮点型参数
- 将浮点型转换为分数型