首页 > 解决方案 > 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#中的十进制类型)

标签: c++doubledecimalprecision

解决方案


推荐阅读