gpt4 book ai didi

C++ float vs double cout setprecision 奇怪之处(新手)

转载 作者:可可西里 更新时间:2023-11-01 17:39:58 25 4
gpt4 key购买 nike

谁能解释为什么当我使用 setprecision() 时这两个相同值的变量可以输出不同的值?

#include <iostream>
#include <iomanip>
int main()
{
float a=98.765;
double b = 98.765;
//std::cout<<std::setprecision(2)<<a<<std::endl;
std::cout<<std::fixed;
std::cout<<std::setprecision(2)<<a<<std::endl;
std::cout<<std::setprecision(2)<<b<<std::endl;
}

a 的输出将为 98.76,而 b 的输出将为 98.77。

最佳答案

那些变量具有相同的值。当您将 98.765 的字面值 double 硬塞进 float 时,它必须进行最佳匹配,并且会损失一些精度。

如果将精度更改为 50,您可以很容易地看到这一点,您还会看到即使是 double 也不能准确表示该值:

98.76499938964843750000000000000000000000000000000000
98.76500000000000056843418860808014869689941406250000

不过,重要的是前者 float 变量会向下舍入,后者 double 会向上舍入。

另见 IEEE754 online converter .

关于C++ float vs double cout setprecision 奇怪之处(新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45498129/

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