round() 函数在 C++ 中显示科学记数法

round() function displaying scientific notation in c++

我正在编写一个 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;    
}
    

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

试试这个:

#include <iomanip> 添加到程序的顶部。

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

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

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

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