gpt4 book ai didi

c++ - 为什么 C++ 在除法时不返回 double?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:57 26 4
gpt4 key购买 nike

我正在尝试除以两个整数,并希望得到 double 的确切答案。我的代码适用于小值:

#include<iostream>
using namespace std;
int main()
{
int max = 100;
int min = 10;
int n = 8;
double gap = (max-min)/(double)(n-1);
cout<<gap<<endl;
}

这会打印出 12.8571

但是当我运行这个时:

#include<iostream>
using namespace std;
int main()
{
int max = 99404748;
int min = 925679;
int n = 240;
double gap = (max-min)/(double)(n-1);
cout<<gap<<endl;
}

它打印 412046 而实际答案是 412046.3138

这种行为的原因是什么?另外,我该如何解决?

最佳答案

double 值的一切都很好。您看到的结果只是它在 std::ostream 中的表示方式的问题。

使用 fixed and setprecision() I/O manipulators , 改变表示的行为:

#include<iostream>
#include <iomanip>
using namespace std;
int main()
{
int max = 99404748;
int min = 925679;
int n = 240;
double gap = (max-min)/(double)(n-1);
cout << fixed << setprecision(4) <<gap<<endl;
// ^^^^^ ^^^^^^^^^^^^^^^
}

Live Demo

关于c++ - 为什么 C++ 在除法时不返回 double?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38106423/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com