我这里遇到了一点问题。我有两个int
类型的值,一个是美元,另一个是美分。我的任务是将它们组合成一个double
类型的值,但我遇到了一些麻烦。
下面是我想要实现的示例:
int dollars = 10
int cents = 50
<some code which I haven't figured out yet>
double total = 10.50
我认为这是相对简单的,但我很难理解它。 谢谢你的帮助!
首先,想象一下如果你用铅笔和纸解决这个简单算术问题的方式(与C语言无关)。一旦你找到了手动解决它的方法,编程实现将会变得非常简单。
total=dollar+cents/100;
不会正确地工作... - Matteo Italia难道不是很简单吗:total = dollars + (cents/100)?
没有必要把这个问题复杂化。
这并不难...你需要将 dollars
转换为 double
1,然后加上 cents
乘以 0.01
(或除以 100.
- 注意末尾的点号,这是为了表示 100.
是一个 double
常量,所以 /
将执行浮点除法而不是整数除法)。
...但要注意,在二进制浮点变量中存储货币值根本不是一个好主意,因为二进制没有许多“精确”的十进制金额的有限表示(例如0.1),这些金额将被存储在近似表示中。使用这样的值进行计算可能会产生“奇怪”的结果。
那么 double total = double(dollars) + double(cents) / 100.0;
怎么样?
请注意,double
不是表示基于10的货币的好数据类型,因为它无法精确表示 1/100
。考虑使用定点解决方案,或者也许是十进制浮点数(这些很少见)。