0

我是 C++ 的初学者,为了完成一项任务,我编写了将数字转换为英语的代码。我的问题是从整数中获取小数。根据建议,我将 void expand 更改为 double 值并更改了获取小数的代码,现在我的代码的其余部分收到“double 和 int 类型的无效操作数到二进制运算符 %”。与(价值)有关吗?

void expand(double);

int main()

{
 ......
}
void expand(double value)
{
string const ones[20] = 
    { 
     " ...... "
    }           
if(value>1)
    {
    double decimalPart = value - (int)value;
    }
else if(value>=1000)
{
    expand(value/1000);
    cout<<" thousand";
    if(value % 1000)
.....
4

2 回答 2

1
void expand(int value)

将上述内容更改为双倍以使任何工作正常

void expand(double value)

在更改上述内容后,您也可以通过以下方式单独获取小数部分

double decimalPart = value - (int)value;
于 2014-10-25T17:58:25.970 回答
0

value是一个int因此使用它完成的任何算术运算都将忽略小数部分。因此,您在传递num到扩展函数时所做的就是将其转换为int. 因此,您正在删除小数。

double foo = 123.45;
expand(foo); // This will take only 123 and disregard the .45

将其声明为双入void expand(double value),看看会发生什么。

于 2014-10-25T17:55:18.177 回答