c++ - 类型转换 C++ 的行为方式很奇怪

标签 c++ types casting

这可能是一个愚蠢的问题,但我遇到了一个奇怪的问题。

我发现这行代码

cout << long((15.25-14.74)*100) << endl 

将输出 50。而这一行

cout << long(0.51*100) << endl

将输出 51。

我的问题是为什么它们不同,为什么第一个输出 50 而不是 51?

最佳答案

在浮点运算中,实数有时可能不是您所期望的,因为精度是有限的。在您的情况下,0.51实际上是0.50999999

关于c++ - 类型转换 C++ 的行为方式很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21875170/

相关文章:

c++ - 卡尔曼滤波器库

c++ - 虚方法调用线程安全吗?

java - 我应该如何转换具有多个边界的 Java 泛型?

sql - 使用 T-SQL 的 SQL Server 中的 Cast 和 Convert 函数有什么区别?

c++ - 编译目录中的所有源文件并将objs存储在不同的目录中

c++ - 在 C++ 中将 uint8_t 数组转换为位集

list - 为什么haskell没有异构列表

haskell - 我如何 "Extract"Haskell中某个角度的值

typescript :声明对象上的所有属性必须属于同一类型

c# - 从基类强制转换为继承类时,InvalidCastException?