Форум — Development [c] стандартные библиотеки c 0 1 есть ли в стандартных библиотеках С функция, округляющая вещественные типы? к примеру 2.6999 до 2.7. или писать самому? Ссылка
round, ceil, floor, lround, nearbyint, rint, trunc Eddy_Em ☆☆☆☆☆ (27.01.12 11:44:20 MSK) Показать ответ Ссылка
Ответ на: комментарий от Sorcerer 27.01.12 11:43:44 MSK тс соглашается, что он в С ничего не понимает. why? Andersen ★★ (27.01.12 11:45:58 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от Eddy_Em 27.01.12 11:44:20 MSK floor и ceil разве не возвращают целое число? Andersen ★★ (27.01.12 11:47:06 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от Andersen 27.01.12 11:47:06 MSK Советую man почитать. Они double возвращают. Но проще всего round использовать (он-то по правилам округляет).Для вашего случая: double a = 2.6999; printf("a = %f\n", round(a*10.)/10.); Eddy_Em ☆☆☆☆☆ (27.01.12 11:51:35 MSK) Ссылка
да - возврашает целое - ноа=1.324234;a2=ceil(a*100)/100;a2 будет равна 1.32 ae1234 ★★ (27.01.12 11:53:55 MSK) Показать ответы Ссылка
Ответ на: комментарий от Andersen 27.01.12 11:47:06 MSK Ну так домножить/поделить на 10^{нужная точность} никто не мешает. Delirium_veritas ★ (27.01.12 11:54:44 MSK) Ссылка
Ответ на: комментарий от ae1234 27.01.12 11:53:55 MSK Здесь лучше ceil(a*100)/100.0 Delirium_veritas ★ (27.01.12 11:55:30 MSK) Показать ответ Ссылка
Ответ на: комментарий от ae1234 27.01.12 11:53:55 MSK Плюсую вас и round. buddhist ★★★★★ (27.01.12 11:57:40 MSK) Ссылка
Ответ на: комментарий от Delirium_veritas 27.01.12 11:55:30 MSK имхо излишне - ceil возвращает doubleа double деленная даже на int констату - всеравно останеться doble ae1234 ★★ (27.01.12 12:35:58 MSK) Показать ответ Ссылка
можно без мат функций - в стиле double f,f2; f=1.2323434; f2=(int)(f*100+1)/100.; printf(«%f\n»,f2); ae1234 ★★ (27.01.12 12:39:42 MSK) Показать ответы Ссылка
Ответ на: комментарий от ae1234 27.01.12 12:35:58 MSK Дадад. Обшибся. Чего-то мне подумалось с пьяных глаз, что у double точки нет. С long'ом перепутал. Delirium_veritas ★ (27.01.12 12:49:27 MSK) Ссылка
Ответ на: тс соглашается, что он в С ничего не понимает. от Andersen 27.01.12 11:45:58 MSK Потому что после округления точного числа не выйдет. Sorcerer ★★★★★ (27.01.12 13:11:01 MSK) Ссылка
Ответ на: комментарий от ae1234 27.01.12 12:39:42 MSK f=1.2323434; f2=(int)(f*100+1)/100.Садись, два! anonymous (27.01.12 13:24:24 MSK) Ссылка
Ответ на: комментарий от ae1234 27.01.12 12:39:42 MSK Мало того, что написана чушь, так еще и при округлении, например, числа, равного трем миллиардам «с копейками», получится хрен знает что ☺ Eddy_Em ☆☆☆☆☆ (27.01.12 13:27:37 MSK) Показать ответ Ссылка
Ответ на: комментарий от Eddy_Em 27.01.12 13:27:37 MSK нууж - у всего есть свои ограничения :) ae1234 ★★ (27.01.12 13:41:23 MSK) Ссылка
http://gcc.gnu.org/onlinedocs/gcc/Decimal-Float.html#Decimal-FloatЕсть таках хрень, правда непортабельно... Наверняка и библиотеку можно найти. anonymous (27.01.12 15:18:44 MSK) Ссылка
ок, всем спасибо. было познавательно (= Andersen ★★ (27.01.12 15:21:19 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от Andersen 27.01.12 15:21:19 MSK Тебя в школе не учили что 2.6999999(9) и 2.7 это одно и то же? anonymous (27.01.12 17:31:59 MSK) Показать ответ Ссылка
Ответ на: тс соглашается, что он в С ничего не понимает. от Andersen 27.01.12 11:45:58 MSK Ты не в Си ничего не понимаешь, а в том, как работают числа с плавающей точкой(во-первых), а во-вторых в математике за 11 класс. anonymous (27.01.12 17:32:56 MSK) Ссылка
Ответ на: комментарий от anonymous 27.01.12 17:31:59 MSK Ты где в оп-посте увидел (9)? anonymous (27.01.12 17:34:33 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 27.01.12 17:34:33 MSK Очевидно, период не видно потому что точность ограничена.Ты знаешь что такое числа с плавающей точкой вообще? Зачем точка плавающая?Потому что ими представляются _вещественнные_ числа, не конкретные рациональные, блять.Не знаешь? Тогда и не пизди. anonymous (27.01.12 17:45:12 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 27.01.12 17:45:12 MSK Тебя в школе не учили что 2.6999999(9) и 2.7 это одно и то же? Очевидно, период не видно потому что точность ограничена.То есть по-вашему, не существенно, что «точность ограничена»? Херну спорол, уж будь любезен, слейся по-тихому. anonymous (27.01.12 18:00:59 MSK) Ссылка
Ответ на: комментарий от anonymous 27.01.12 17:45:12 MSK Ты знаешь что такое числа с плавающей точкой вообще?Да, знаю со времен МК-52. И еще знаю, зачем их может понадобиться округлять. anonymous (27.01.12 18:04:30 MSK) Ссылка