如何将双3.14567视为3.14(即具有给定的精确度)

Ash*_*ban 0 c++

我想知道在c ++中是否有任何方法可以处理具有给定精度的double.例如,数字3.1345将被视为3.13,数字0.009将被视为0(点后的精度为2).

我需要将它应用于数学运算.例如:

double a = 0.009;
double b = 3.12345

//a should be considered as 0, b as 3.12

double c = a*b // should output 0.
double d = a+b // should output 3.12
Run Code Online (Sandbox Code Playgroud)

因为函数setprecision()用于std我想知道是否还有其他功能可以做到这一点.

谢谢

Mic*_*rdt 6

永远不会与双打一起正常工作.双打是二进制小数,他们不具有小数或小数精度.有关详细信息,请阅读"浮点指南 ".

如果您需要特定的十进制行为,则必须删除双精度数并使用十进制数据类型.你可能会发现看起来很有用的基于双重的解决方案,但是你总会碰到它不会发生的情况.