【问题标题】:round() function displaying scientific notation in c++在 C++ 中显示科学计数法的 round() 函数
【发布时间】:2021-07-24 06:05:59
【问题描述】:

我正在编写一个 C++ 代码,它将两个浮点数相除并输出一个整数。 但是当我尝试使用 round() 函数进行除法和四舍五入时,我得到的数字是:

8878323 / 5 = 1.77566e+06

每个其他数字都作为整数输出。不知道为什么这个不是。

代码:

#include <iostream>
    #include <cmath>

using namespace std;

int main() {
    float a[30] = {41, 2733017,17473, 3164246, 105, 8015, 150, 12, 1090473, 81, 135, 15539, 8251, 7029, 9589930, 6027963, 5959834, 12661, -884988, 7258221, 8878323, 92, 1200422, 16645, -3062617, 147, 5421, 22, 9495996, 2302743};
    float b[30] = {2, 367, 506, 763, 14, 972, 12, 8, 889, 6, 10, 1840, 1294, 1834, 3822029, -1641686, 126, 1826, -2463550, 509, 5, 8, 717, 1270, 3789065, 14, 806, 4, 307, 803};
    
        
    float ans[30];    
    for(int i=0; i<30; i++) {
        ans[i] = a[i]/b[i];
        ans[i] = round(ans[i]);
    }
    
    for(int i=0; i<30; i++)
        cout << ans[i] << " ";
        
    return 0;    
}
    

【问题讨论】:

    标签: c++ rounding


    【解决方案1】:

    这只是 cout 的精度问题。几乎任何足够大的浮点数都会产生这个问题。

    试试这个:

    #include &lt;iomanip&gt; 添加到程序顶部。

    然后调整您的 cout 语句以使用 setprecision 说明符:

     cout << setprecision(15) << ans[i] << " ";
    

    或者,您可以在打印之前简单地将结果转换为 long

     cout << (long)(ans[i]) << " ";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 2013-05-30
      • 2017-07-08
      相关资源
      最近更新 更多