为什么12.0==11.999999999999999999被认为是真的
Why does 12.0 == 11.999999999999999999999 is considered as true?
有人能给我一个深入的解释吗?系统考虑近似对吗?(如果我错了,请纠正我(我想知道计算机在这种情况下是如何工作的。非常感谢。
计算机中的普通数字存储的精度只有这么多。C++中的浮点值通常为4个字节。32位不能存储那么多9的精度,所以编译器会四舍五入到它能处理的精度。
基本上,你总共可以得到大约10位数的精度,而且你有更多的9。
相关文章:
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- 为什么rand()的使用被认为是不好的
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 你如何理解"std: :forward is just syntactic sugar"?这是真的吗?
- 一个C头文件可以被认为是一个接口吗
- 指向数组unique_ptr在调用 release() 后会自动释放动态内存,这是真的吗?
- 为什么const char*和const char[]作为函数参数被认为是等价的
- 为什么12.0==11.999999999999999999被认为是真的
- 这会被认为是糟糕的编程实践吗?
- 为什么这被认为是恒定的?
- 抽象类/接口中的空方法是否被认为是一种好的做法?
- 如果我具有调用其其他实例之一的超载函数,它是否被认为是递归功能
- OCCI 异常:连接描述符太长(但不是真的)
- "data race"(不是真的)在通知条件变量并解锁关联的互斥锁后
- std::unique_ptr可以被认为是一个monad吗?
- C++ 指向类的指针和/或引用是否被认为是"movable"?
- 使用自定义宏来简化 cin 和 cout 语句等内容被认为是更好还是更差
- 使用成员函数更改对象或返回并分配它是否被认为是更好的做法?
- 我很难修复我认为是双重免费的东西
- 布尔总是认为这是真的