为什么我的浮点值会丢失精度并丢弃小数?下面的代码示例
Why do my float values lose precision and drop decimals? Example code below
我以前从未真正使用过浮动,我正在处理的当前项目需要它们。我遇到了一些奇怪的问题,这些问题是我几年前了解到的,但我已经忘记了为什么会发生这种情况。
我乘以或加上浮点数后的结果并不是应该的。
这是我的代码:
void main ()
{
//Example 1 - ERROR
float a=16937.6;
float b=112918;
float total=b+a;
cout<<total<<endl; //Outputs 129896 - rounds up and loses decimal (129855.6)
//Example 2 - Error
float c=247.82;
float d=9995.2;
float total2=c+d;
cout<<total2<<endl; //Outputs 10243 - loses all decimals (10243.02)
system ("pause");
}
您的问题不是小数精度,而是用于输出值的格式。
尝试:
cout << setiosflags(ios::fixed) << setprecision(2) << x;
每个程序员都应该知道浮点运算,或者为什么我的数字加不起来?
简而言之,实数是无限的,计算机不是。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- C++将浮点指针值舍入为小数位数
- 我的代码一直返回0作为文本文件中的小数数
- 以下对二进制转换代码的小数如何工作
- 用于分隔整个部分和小数部分的代码
- C++ - 为什么我的cout代码显示小数不一致
- 如何在不破坏当前工作代码的情况下添加小数
- 为什么我的浮点值会丢失精度并丢弃小数?下面的代码示例