两个整型到一个双精度c++
Two ints to one double C++
我在这里遇到了一点问题。我有两个int
值,一个代表美元,一个代表美分。我的工作是将它们组合成一个double
值,我遇到了一些麻烦。下面是我希望能够做到的一个例子:
int dollars = 10
int cents = 50
<some code which I haven't figured out yet>
double total = 10.50
我想认为它是相对简单的,但是我很难弄清楚。谢谢你的帮助!
首先考虑如何用铅笔和纸(与C无关)将其作为一个简单的算术问题来解决。一旦您找到一种手动解决它的方法,我敢肯定编程的方式将显得微不足道。
double total = double(dollars) + double(cents) / 100.0;
呢?
注意,double
不是一个很好的数据类型来表示基于10的货币,因为它不能精确地表示1/100
。可以考虑使用定点解决方案,或者小数浮点数(这种情况很少见)。
这并不难…您必须将dollars
转换为double
1,并将cents
乘以0.01
(或除以100.
-注意后面的点,这表明100.
是double
常量,因此/
将执行浮点除法而不是整数除法)。
…但请注意,将货币值存储在二进制浮点变量中根本不是一个好主意,因为二进制没有许多"精确"小数(例如0.1)的有限表示,这些小数将存储在近似表示中。当你开始用这些值做算术时,处理这些值可能会产生"奇怪"的结果。
- 实际上,根据你的表达式,由于隐式强制转换,它可能不是必要的。
如果你对编程的"整体思想"感兴趣,而不仅仅是对你的作业感兴趣,我建议你考虑一下:"有没有一种方法可以把一整美元表示成一定数量的美分?"你为什么要问这个?因为如果你想将某些值的两种不同的"类型"表示为一个值,你需要以一种方式"规范化"或"标准化"它们,这样就不会有任何数据丢失或损坏(或至少对于较小的问题)。
我也同意Kerrek SB的观点,把钱当作double
可能不是最好的解决方案。
是不是同样简单:total = dollars + (cents/100);
?相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '