LINUX.ORG.RU

язык C: мат операция


0

0
при делении чисел, если результат меньше нуля, то он округляется до нуля, то есть поведение аналогично bc при scale=0
то есть допустим 128/934 = 0
★★
Однако...

В одном предложении, непонятно к чему сюда запощенном (Это вопрос? Утверждение? Жалоба на судьбу? Провокация флейма?) сразу несколько противоречащих друг другу утверждений.

Die-Hard ★★★★★
()
И каков же твой вопрос?
Onanim
()

Ответ.

Галоперидол.
anonymous
()
Портабельный ассемблер хотит точек.
geekkoo
()
не округляет, а берет целую часть, и происходит это если ты
пытаешся запихнуть результат в целочисленную переменную, если
тебе все же необходимо сохранить число как есть, то объяви
переменную как float.

float r = 128 / 934;
aton
()
Ответ на: комментарий от aton
aton:

Еще один пост, состоящий из неверных утверждений.

#include <stdio.h>
int main(void)
{
float r = 128 / 934;
   printf("Ono=%f\n",r);
return 0;
}

$./a.out
Ono=0.000000

Die-Hard ★★★★★
()
Ответ на: комментарий от aton
aton:

> Рассуждения верные :) ...

Не-а ;)

>не округляет, а берет целую часть, и происходит это если ты пытаешся запихнуть результат в целочисленную переменную, если тебе все же необходимо сохранить число как есть, то объяви переменную как float.

Взятие целой части происходит отнюдь не в момент "запихивания", а в момент деления. Именно так определяется целое деление.

Например, printf("Ono=%f \n",128/934);. Никакого присваивания!

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard
извиняюсь за некорректно поставленный вопрос
но проблема именно в том, что какой бы не был тип float или double
результат от деления (если результат меньше 1) будет округлен до нуля
kao ★★
() автор топика
Ответ на: комментарий от kao

Тип операнда

> извиняюсь за некорректно поставленный вопрос но проблема именно в том, что какой бы не был тип float или double результат от деления (если результат меньше 1) будет округлен до нуля

float или double должен быть тип хотя бы одного из операндов.

DKorolkov
()
Ответ на: комментарий от kao
2kao:

> какой бы не был тип float или double результат от деления (если результат меньше 1) будет округлен до нуля

Опять неверно :)!

float r = -5/4;

-5./4. = -1.25 <1., но "округляется" вовсе не до 0.

Die-Hard ★★★★★
()
Ответ на: комментарий от anonymous
> Опять неверно. Надо поменять С и С++ местами.

и всё равно будет неверно

в C так нельзя

float(1)

нужно так

(float)1

:)

k_andy ★★★
()
Ответ на: комментарий от anonymous
Точка помогает в случае констант, в случае с

int i = 1, j = 2;
float f = i / j;

придется кастить( как у уже сказали )
aton
()
Ответ на: комментарий от kao
Слушай, а зачем такие выбриконы - разве так нельзя было сделать бы

y = x*100/c ? все бы работало :)

anonymous
()
Ответ на: комментарий от anonymous
>Слушай, а зачем такие выбриконы - разве так нельзя было сделать бы
y = x*100/c ? все бы работало :)

в том то и дело, что не работает
kao ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.