c++ - c++ doubles and floats,如何绕过丑陋的真相
问题描述
double f1 = 0.00000001;
double f2 = 7.00000001;
double f3 = -7.00000000;
double sum = f2 + f3;
bool shouldBeTrue = sum == f1;
shouldBeTrue 使用 VS C++ 2015/2017 为假
float f1 = 0.00001;
float f2 = 7.00001;
float f3 = -7.00000;
float sum = f2 + f3;
bool shouldBeTrue = sum == f1;
shouldBeTrue 使用 VS C++ 2015/2017 为假
如何在 C++ 中实现这一点,以便我可以存储写在代码中的值而不是近似值?有什么新的类型或库可用吗?(如c#中的十进制类型)
解决方案
推荐阅读
- excel - Path/File Access error for LoginForm.show
- python - %matplotlib inline gives the same result with or without it on Jupyter Notebook
- windows - 用python命令在windows上执行for循环
- python - Return the 6th largest value in a row from Python Datagrame
- python - Python - Distance matrix between geographic coordinates
- tensorflow - Google AutoML for time series classification
- c# - 在 Azure AD 上将身份服务实现为精简抽象
- java - Android:使用来自 TarsosDSP 的 PercussionOnsetDetector 读取振幅/分贝以进行拍手检测
- highcharts - Highcharts - 条形图 - 在条形下方显示系列名称
- ruby - 基于匹配键的Ruby组散列并将不匹配键的值存储在数组中