LINUX.ORG.RU

Ответ на: комментарий от Andersen

Советую man почитать. Они double возвращают. Но проще всего round использовать (он-то по правилам округляет).

Для вашего случая:

double a = 2.6999;
printf("a = %f\n", round(a*10.)/10.);

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от ae1234

Дадад. Обшибся. Чего-то мне подумалось с пьяных глаз, что у double точки нет. С long'ом перепутал.

Delirium_veritas
()
Ответ на: комментарий от ae1234

f=1.2323434;
f2=(int)(f*100+1)/100.

Садись, два!

anonymous
()
Ответ на: комментарий от ae1234

Мало того, что написана чушь, так еще и при округлении, например, числа, равного трем миллиардам «с копейками», получится хрен знает что ☺

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от anonymous

Очевидно, период не видно потому что точность ограничена.

Ты знаешь что такое числа с плавающей точкой вообще? Зачем точка плавающая?
Потому что ими представляются _вещественнные_ числа, не конкретные рациональные, блять.

Не знаешь? Тогда и не пизди.

anonymous
()
Ответ на: комментарий от anonymous

Тебя в школе не учили что 2.6999999(9) и 2.7 это одно и то же?

Очевидно, период не видно потому что точность ограничена.

То есть по-вашему, не существенно, что «точность ограничена»? Херну спорол, уж будь любезен, слейся по-тихому.

anonymous
()
Ответ на: комментарий от anonymous

Ты знаешь что такое числа с плавающей точкой вообще?

Да, знаю со времен МК-52. И еще знаю, зачем их может понадобиться округлять.

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