两个整数到一个双C ++

时间:2011-11-20 23:27:17

标签: c++ double int

我在这里遇到了一些问题。 我有两个int值,一个用于美元,一个用于美分。我的工作是将它们合并为一个double值,我遇到了一些麻烦。 以下是我希望能够做到的一个例子:

int dollars = 10
int cents = 50
<some code which I haven't figured out yet>
double total = 10.50

我想它相对简单,但我很难搞清楚它。 谢谢你的帮助!

5 个答案:

答案 0 :(得分:7)

首先考虑如何使用铅笔和纸张(与C无关)将其解决为一个简单的算术问题。一旦你找到了一种手动方式,我肯定编程它的方式似乎微不足道。

答案 1 :(得分:0)

这并不困难......你必须将dollars转换为double 1 并添加cents乘以0.01(或分开通过100. - 注意尾随点,表示100.double常量,因此/将执行浮点除法而不是整数除法。

...但请注意,将货币值存储在二进制浮点变量中根本不是一个好主意,因为二进制不具有许多“精确”小数量的有限表示(例如0.1) ,将以近似表示形式存储。当您开始使用这些值时,使用这些值可能会产生“奇怪”的结果。


  1. 实际上,根据你的表达方式,由于隐式演员表,可能没有必要。

答案 2 :(得分:0)

double total = double(dollars) + double(cents) / 100.0;怎么样?

请注意,double不是表示基于10种货币的良好数据类型,因为它无法准确表示1/100。考虑使用定点解决方案,或者可能是十进制浮点数(这些很少见)。

答案 3 :(得分:0)

如果你对编程的“整体想法”感兴趣,而不仅仅是为了让你的作业正确,我建议你考虑一下:“有什么方法可以把一整美元代表一定数量的美分? “你为什么要问这个?因为如果您想将某些值的两种不同“类型”表示为一个值,则需要对它们进行“规范化”或“标准化”它们,以便不会出现任何数据丢失或损坏(或至少对于较小的数据丢失或损坏)问题)。

我也同意Kerrek SB,代表资金double可能不是最佳解决方案。

答案 4 :(得分:0)

不是那么容易:总计=美元+(美分/ 100); ?

没有理由使这一点复杂化。