gpt4 book ai didi

c++ - 乘法 : uint vs float

转载 作者:太空狗 更新时间:2023-10-29 20:01:57 25 4
gpt4 key购买 nike

为什么下面两个结果不一样?无论如何,下面乘法的结果应该是一个整数。

uint16_t test = 500.00 * 128.51;
std::cout << test << std::endl; ----> 64254

但是

float test = 500.00 * 128.51;
std::cout << test << std::endl; ----> 64255

最佳答案

(从评论中移出)

完成previously linked duplicate , 500.00 * 128.51 实际上比 64255 略小(因为 128.51 无法用二进制 FP 准确表示)。

当转换为整数类型时,小数点被丢弃(值被截断),因此您的 64254.99999... 变为 64254。

OTOH,将其保存为 double ,您保留 64254.9999... 和默认值 ostream::operator<<行为是在打印时在某个小数位四舍五入,因此在显示时您会看到它就像 64255。

关于c++ - 乘法 : uint vs float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48798699/

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