Функция C ++, возвращающая 0 вместо 0,35 - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь вызвать десятичную функцию из основной функции. Эта функция возвращает то, что находится справа от десятичной точки любого заданного числа. Когда я распечатываю значение rightSide, которое возвращает десятичная функция, значение является правильным (0.35). Однако после того, как я вызываю десятичную функцию из основной функции и пытаюсь сохранить возвращаемое значение, возвращаемое значение (переменная a в main) равно 0. В основном, два значения, которые я печатаю, должны быть одинаковыми, но это не так.

#include <iostream>
#include<iomanip> 
using namespace std;

int integer(double number) {
    int leftSide;
    leftSide = number;
    return leftSide;
}

int decimal (double number) {
    int leftSide;
    double rightSide;
    leftSide = integer(number);
    rightSide = number - leftSide;
    cout << "rightSide: " << rightSide
    return rightSide;
}

int main() {
    double x;
    x = decimal(3.25);
    cout << "x: " << x << endl;
    return x;
}

Ответы [ 2 ]

2 голосов
/ 09 октября 2019

Да, целые числа не занимают десятичные разряды, из-за досадного факта, что они целые числа, а не десятичные числа. Возможно, рассмотрим тип, который может обрабатывать десятичную точку?

double decimal (double number) {
    int leftSide;
    double rightSide;
    leftSide = integer(number);
    rightSide = number - leftSide;
    return rightSide;
}
1 голос
/ 09 октября 2019

int decimal (double number) должно быть double decimal(double number), также вы не можете вернуть дробь, поскольку вы возвращаете код возврата команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...