1
3
拥有单独的美元和美分成员只会使代码变得更加复杂。只需使用美分,然后重载算术和赋值运算符、构造函数,可能还需要<&书信电报;并且>>用于I/O。 加法和减法是微不足道的,在这种情况下,只是按100缩放的普通整数运算。通常,定点除法/乘法需要重新缩放;在这种情况下,你可以忽略这一点,因为金钱除以或乘以金钱是没有意义的;但是,您可能希望重载整数和浮点类型的货币乘法或除法(例如,用于税收、折扣或利息计算)。
通过过载<&书信电报;并且>>对于货币运算符,您可以通过将其转换为/从来控制美分值的输入或显示方式
有许多场景可能需要舍入,但在大多数情况下,可以通过运算符重载来处理。例如,以美元为单位的用户输入可以由赋值运算符和构造函数处理,而利息、税收或股份分配计算可能会导致小数点,可以通过重载*和/运算符来处理(尽管可能在内部使用赋值运算符或构造函数,因此您只需要在一个位置进行舍入)。 保持以美分为单位的值,并将浮点输入或中间美元值四舍五入为美分,正负值处理可按如下方式实现:
|
2
1
我建议你对
你可以使用 locale 解析货币表达式和 std::stringstream 随着 stream manipulators 以指定精度,作为实现所需类的基结构。 下面是美分和美元之间的转换示例:
此外,还有 a boost library 用于货币格式。
注:传统的4/5舍入由标准库函数执行
如果您想要取整的整数结果,则不需要
|
3
0
以浮点形式读取值,并从中对其进行分解。 希望这有帮助! |
4
0
我建议将输入乘以1000左右,使输入成为一个整数,这样您对其进行的操作更准确。四舍五入后,您可以使用整数除法来计算美元,使用余数运算符来计算美分(乘以10)。至于你的第二个问题,在四舍五入之前,你至少应该把数字转换成美元和美分的整数,然后你可以选择你喜欢的那个。以下是舍入输入的示例:
至于类型转换,它们不是四舍五入的最佳选择。如果要使用以下代码:
你会得到
希望这有帮助。 |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |