0

私は C++ の初心者で、割り当てのために数字を英語に変換するコードを書きました。私の問題は、整数から小数を取得することです。アドバイスを受けて、void 展開を double 値に変更し、10 進数を取得するためのコードを変更しました。コードの残りの部分で、「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)

上記を double に変更して、何かが機能するようにします

void expand(double value)

また、上記を変更した後、次のようにして小数部分のみを取得できます

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

valueintなので、それを使用して行われる算術演算は小数部分を無視します。したがってnum、expand 関数に渡すときに行っていることは、それを としてキャストすることintです。したがって、小数を削除しています。

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

それを double in として宣言し、void expand(double value)何が起こるか見てみましょう。

于 2014-10-25T17:55:18.177 に答える