gpt4 book ai didi

c++ - cout 和 printf 的 pow 函数输出不同?

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:52 25 4
gpt4 key购买 nike

我正在编写一个程序来计算 2 的负次方。我使用了以下两个代码片段:

cout.precision(3);
cout << scientific << pow(2.0, p) << endl;

ans = pow(2.0, p);
printf("%.3e\n", ans);

对于 p = -8271 , cout给出了正确的答案 (1.517e-2490) 但我对 printf 得到了截然不同的答案(6.929e-310)。为什么会出现这种差异?

我在 Ubuntu 上使用 Codeblocks。

最佳答案

我打赌那是因为 ans 是一个 long double,但是你没有告诉 printf 期待一个 long double。您想要的格式代码是 %.3Le 假设是这种情况。

g++ 编译器甚至有检测格式/参数不匹配的警告(我认为它带有 -Wall),但我总是更喜欢 iostream,因为它们像这样类型安全。

当然,所有这些都是假设 p 也是 long double,导致编译器选择 long double 版本战俘

关于c++ - cout 和 printf 的 pow 函数输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509160/

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