Десятичное число из целых и недопустимых операндов * Обновлено

Я новичок в C ++ и для задания я написал код для преобразования числа в английский.
Моя проблема заключается в получении десятичного числа из целого числа. По совету я изменил расширение void на двойное значение и изменил код для получения десятичного числа, и теперь я получаю «недопустимые операнды типов 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)
.....

0

Решение

void expand(int value)

Измените выше, чтобы удвоить, чтобы все работало

void expand(double value)

Также вы можете получить только десятичную часть следующим образом после изменения вышеуказанного

double decimalPart = value - (int)value;
1

Другие решения

value является int поэтому любая арифметическая операция, выполненная с ее использованием, будет игнорировать десятичную часть. Итак, что вы делаете при прохождении num в функцию расширения приводит его как int, Следовательно, вы удаляете десятичные дроби.

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

Объявите это как двойной в void expand(double value) и посмотрим, что получится.

0

По вопросам рекламы [email protected]