如何在C中读取和存储货币值

我想知道在C中读取和存储货币值的最佳方法是什么,例如11.22。

我尝试scan("%f", &num) ,但我在浮动结束时得到随机值。

有没有办法只读到小数点后第二位?

如果我添加这些数字,它们就不准确; 由于某种原因它倒圆了。 添加11.22 + 22.33优于11.220000 + 22.330000,因为我得到了随机值; 我不知道为什么!

如果超出小数点后第二位并且用户输入了一个字符,是否有办法将错误返回给用户。

我在考虑将(数组)字符串转换为浮点数。

切勿使用浮点存储货币。 浮点数不能代表十分之一或百分之一 ,只能代表二元有理数,即p / qforms的数字,其中p和q是整数,q是2的幂。因此,任何尝试代表0,25,50之外的其他分数,或75美分将需要近似值,这些近似值转化为可被利用以使您赔钱的漏洞。

相反,以美分(或任何最小的货币划分)存储整数值。 当读取用小数点格式化的值时,只需将整个货币单位和美分读取为单独的字段,然后乘以100(或10的适当幂)并添加。