170 похожих чатов

Здрастуйте, знаю, простой вопрос, но ответа в гугле я найти

на него не смог...

Мне нужно округлить float до 2 знаков после запятой, не подскажете, как это можно сделать?

(Для языка Си)

37 ответов

4 просмотра

решение в лоб - умножить на 10^2 скастить в int, поделить обратно, скастив во float. не уверен в его правильности

🐈
решение в лоб - умножить на 10^2 скастить в int, п...

А если человеку надо округлить в меньшую или большую сторону?

Alexander "Ternvein" Isaev
Вместо каста можно roundf.

Я бы сказал нужно, т.к. каст просто отбросит дробную часть, а не округлит.

Alexander "Ternvein" Isaev
Вместо каста можно roundf.

в таком случае можно сразу готовую функцию найти, и не думать о том что там под капотом

🐈
в таком случае можно сразу готовую функцию найти, ...

Не уверен, что для конкретного знака после запятой есть готовая функция.

Juan- Автор вопроса
Ilya Zviagin
Неправильно.

предложите как правильно

Вы же про это ?

Ты разобрался? Что хочешь невозможное ?

Если нужно 1.23000 получить из 1.23456, попробуй trunc(1,23456*100)/100.0

Ilya Zviagin
Нет

Я проверил, сработало

Vildan Safin
Через trunc получается вроде?

Ему ж надо до двух знаков

Ilya Zviagin
Ага.. Ну ну...

Если нужно 1.23000 получить из 1.23456, попробуй trunc(1,23456*100)/100.0

Vildan Safin
Если нужно 1.23000 получить из 1.23456, попробуй t...

Всё ничего, а если значение что-нибудь близкое к миллиарду хотя бы?

Vildan Safin
Double вроде

Ну ты понимаешь, что там нет десятичных цифр?

Vildan Safin
Не очень

Ну вот, надо прежде это осознать

Тимата 🏳️‍🌈 Тэнкю
Всё ничего, а если значение что-нибудь близкое к м...

Так а что случится? Там же младшие разряды точность терять будут

Слава
Так а что случится? Там же младшие разряды точност...

Я скорее про переполнение. Вот умножим мы число на 100 и как мы уверены что мы получим то что хотим, а не -2 миллиарда с шишом?

Vildan Safin
Ну так работает же

ЧИТАТЬ ВСЕМ! https://habr.com/ru/post/112953/ https://smartcoderteam.github.io/what-should-every-programmer-know-about-floating-point-numbers/

Слава
А он разве не даблы на 100 умножает?

Ну я про 2 миллиарда условно сказал. Хз как переполнение дабла происходит

Слава
Так а что случится? Там же младшие разряды точност...

дело не в этом. Дело в том, что округление до каких-то десятичных знаков БЕССМЫСЛЕНО для чисел с плавающей точкой, они ДВОИЧНЫЕ, Там нет десятичных знаков. Всё , что вы сделаете, это округлите, поделите, домножите и получите НОВУЮ ПОГРЕШНОСТЬ В ЧИСЛЕ

Juan- Автор вопроса
Vildan Safin
Если нужно 1.23000 получить из 1.23456, попробуй t...

Спасибо большое, я уже справился:)))

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
5
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта