Как получить части в целочисленном делении? [дубликат]

Этот вопрос уже имеет ответ здесь:

Как Вы делите два целых числа и получаете двойной или ответ плавающий в C?

24
задан Georg Schölly 5 February 2013 в 15:21
поделиться

1 ответ

Вам нужно бросить одно или другое в float или double.

int x = 1;
int y = 3;

// Before
x / y; // (0!)

// After
((double)x) / y; // (0.33333...)
x / ((double)y); // (0.33333...)

Конечно, убедитесь, что вы храните result деления в double или float! Это не привычёт тебе никакой пользы, если ты хранишь результат в другом int.


Относительно комментария @Chad ("[tailsPerField setIntValue:tailsPer]"):

Не передавайте двойной или плавающий значение в setIntValue ,если у вас есть setDoubleValue и т.д. Вероятно, это та же проблема, о которой я упоминал в комментарии, где вы не используете явное приведение, и вы получаете недопустимое значение, потому что double считывается как int.

Например, в моей системе файл:

#include <stdio.h>
int main()
{
    double x = 3.14;
    printf("%d", x);
    return 0;
}

outputs:

1374389535

, потому что double был предпринят попыткой чтения как int.

42
ответ дан 28 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: