gpt4 book ai didi

c++ - 在 C++ 中将 double 转换为 int 而不会出现向下舍入错误

转载 作者:可可西里 更新时间:2023-11-01 18:08:59 26 4
gpt4 key购买 nike

我有以下代码来转换 double进入 int :

double dblValue = 7.30;
int intValue = (int)(dblValue*100); //I want intValue to store exactly 730;
std::cout << intValue;

输出:729

我知道编译器正在读取 dblValue作为7.2999999在转换到 int 之前.

我的问题是:是否可以将其转换为 730通过防止舍入错误?

如果您的解决方案避免使用 C++11 或其他预定义函数,那将是最好的。我在这里使用的唯一预处理器指令是 <iostream> .

最佳答案

将非整数(在数学意义上)的数字转换为整数时,您无法避免舍入错误,您唯一能做的就是尝试实现正确的舍入。

实现合理(虽然不完美)舍入的最简单方法如下:

int intValue = (int)(dblValue < 0 ? dblValue - 0.5 : dblValue + 0.5);

当然,因为你的问题同时被标记为 c++casting 我忍不住用 c++ 风格的转换替换你的 c 风格的转换:

int intValue = static_cast<int>(dblValue < 0 ? dblValue - 0.5 : dblValue + 0.5);

关于c++ - 在 C++ 中将 double 转换为 int 而不会出现向下舍入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374153/

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