using namespace std;
#define mod 1e9+7
int main(){
cout<<mod;
cout<<endl<<fixed<<mod;
}
输出:
1e+009
1000000007.000000
我知道在这种情况下,mod 是一个浮点数,因此由于浮点精度,第一个给出 1e+009 作为输出。但是使用fixed后,为什么输出不是1000000000.000000。
(通过#include 包含所有必需的头文件
1e9 + 7
这个数字可以在
double
中精确表示,这里没有精度损失。
但是,当您使用
std::cout << mod
打印它时,它会使用默认精度打印,即 6 位十进制数字。因此,不打印 7。
您可以使用
std::cout
操纵器调整 std::setprecision
的精度:
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::setprecision(10) << mod << '\n';
}
将打印
1000000007