我有以下问题:
double a = 6.005; double b = 5.995;
我想在点之后设置2位数的精度,例如
double c = a+b;// I would like to get 11.99 not 12.00
。
我该怎么做?
答案 0 :(得分:11)
精确是一回事;圆形显示是另一回事。
我认为这是错误的。您应该想要获得所有精度,并在结果完成时担心舍入以便显示。
更新:
您不应该使用双打代表货币。上次我看,C ++是一种面向对象的语言。您应该为Money创建一个做正确事物的抽象,并从班级客户那里抽象出这些细节。
如果您以美元工作,您可以创建一个Money类来管理货币的私人代表。使用整数进行所有计算并在最后进行渲染。
答案 1 :(得分:9)
我想在点之后设置2位数的精度
只需乘以100然后使用整数。
答案 2 :(得分:3)
您应该使用定点数字:
unsigned int a = 600;
unsigned int b = 599;
unsigned int c = a + b;
unsigned int make_fixed(double d) { return d * 100; }
void print_fixed(unsigned int n) { std::cout << n/100 << "." << n%100; }
答案 3 :(得分:1)
不,您需要逐个调整所有值(mul乘以100,取int部分,div乘以100),或者您需要编写自己的MySpecialDouble类(在场景后面执行相同操作)。