商店价格是双倍?

use*_*886 4 c++ decimal

在C++中将价格存储在双变量中是否安全?在C#和Java中,您可以使用Decimal.(他们还说,以双倍价格存储是非常糟糕的主意).我该怎么做C++?

cyc*_*130 5

如果价格范围合适(可能是),您可以long long在最后两位数之前使用隐含点.所以,12000将意味着120.00.它被称为"定点"算术.但是你需要注意两个货币值的乘法(为什么你还需要它).


Lih*_*ihO 1

取决于您需要的准确性。如果您要使用诸如5.259.14等数字,则甚至不需要double. float就足够了。

如果您要处理帐户余额并添加0.01%到诸如 之类的数字18 570.548911545,那么提供的 15 位十进制数字的精度double就足够了。

如果您需要稍高的精度,请选择long double. 如果这还不够,那就寻找“更精确的替代方案”。