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 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.