使用 10 除法会产生错误的精度
Dividing using 10 gives wrong precision
我的目的是舍入一个值,但它给出了错误的输出
float travellingEmptyDist = 2.05;
travellingEmptyDist = round(travellingEmptyDist * 10); // gives value 21.0
travellingEmptyDist = travellingEmptyDist/ 10.0; // gives wrong value 2.09999, expecting 2.1
有没有办法纠正它
我建议观看此视频计算机爱好者:浮点数
它将为您提供一个非常简单的概述,说明为什么浮点本质上是不精确的,而无需涉及太多的技术细节。我也有偏见,因为我喜欢数字爱好者。
你需要问问自己,你真的需要额外的0.00001精度吗?如果您确实需要更高的精度,请使用双精度而不是浮点数,但即便如此,您仍然会有舍入误差。
如果您需要更高的精度,则必须使用第三方精度算术库。我从来没有需要过,但根据谷歌的结果,GMP似乎很受欢迎。
相关文章:
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 主.cpp:18:20:错误:从"int*"转换为"int"会失去精度 [-fa
- 错误C++在Visual Studio 2019中使用numeric_limits的长双精度最小值/最大值
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- 为什么 2 个双精度值之间的差值计算错误?
- 提升多精度浮点数128:标准::exp错误:'no matching function for call'
- 为什么使用 int64_t 会产生错误的结果,而双精度则按预期进行简单的整数乘法
- CIN 双精度和不带空格的字符串会导致错误
- 标准库to_string(双精度)在 vs2015 中给出错误的值.有什么解决办法吗?
- C++错误:从“int*”转换为“int”会失去精度
- Opengl 精度转换错误编译错误 E0415
- 使用 gcc 编译时,PowerPC 上的长双精度错误
- 在发布版本中划分两个双精度的结果错误
- 由于C++中双精度类型的准确性而导致的错误
- 错误:类型"类特征::张量<双精度,3>"参数提供给"删除",预期指针
- C++ - 泛型结构的成员在分配双精度时给出错误的值(但适用于整数)
- Xcode 错误:指针和双精度之间的比较
- C++ 错误错误:数组下标的类型"双精度 [10][10][double]"无效
- 为什么当我将 int 乘以双精度时会得到错误的值
- C++ [链接器错误] 未定义对"执行计算(字符,双精度)"的引用