Как определить количество знаков после запятой c

Как определить количество знаков после запятой c

Есть ли способ внутри C ++ установить окончательное количество десятичных знаков для значения с плавающей запятой? например, если бы я записывал несколько раз как значения с плавающей запятой, я бы, скорее всего, генерировал разные результаты (с точки зрения количества десятичных разрядов) и хотел бы генерировать числа одинаковой длины, т. е. если бы число возвращалось как 1.33 и есть другие числа, возвращающиеся, как говорят 1.333 я хотел бы сделать первый результат читать как 1.330 ,

Я понимаю, что существуют методы ограничения количества десятичных знаков, такие как setprecision() но я не хочу терять точность моего времени.

Решение

Вы, кажется, путаете две вещи: фактическую точность вычислений с плавающей запятой в C ++ и форматирование float (или же double , или же long double ) значения при печати с потоками C ++ (например, cout).

Первое зависит от аппаратного обеспечения / платформы, и вы не можете управлять им, кроме выбора между float а также double , Если вам нужна лучшая точность, чем что long double может дать вам, вам нужна библиотека для математики произвольной точности, например GMPLIB .

Управление количеством цифр после точки при печати / форматировании проще, см., Например, этот вопрос: Установите цифры после десятичной точки

Другие решения

Если вам нужно ограничить цифры после десятичной точки, будь то фолат, двойная или длинная двойная, то стоит использовать (setprecision). Когда вы используете его отдельно, он будет включать в себя также цифры перед десятичной запятой, а также, если цифры после десятичной запятой меньше установленной точности, он не будет добавлять ноль после них. И решение заключается в использовании фиксированной и showpoint. Поэтому, если вы хотите установить точность до 3 цифр после десятичной точки, напишите эту строку перед отображением или вычислением значений.

Читайте также:  Ga 8i915g mf поддержка процессоров

если float то никак. в принципе у действительного числа кол-во нулей в конце бесконечно

если string то легко, парсите пополам по точке

Ну а дальше просто строковые функции — находим положение точки в строке, возвращаем часть строки от точки и собственно смотрим длину этой строки.

Но это под конкретную написанную вами задачку, вам что надо форматить то? Денежные единицы? Время (для счетчиков)?

Что требуется? Всегда возвращать четыре, или всё таки игнорировать нули?

Воспользовавшись здравым смыслом, рискну предположить, что нули игнорируются, тогда с этим соусом.

Довольно странная задача и формулировка. Хотите определять _нематематический_ вид числа, представляйте (вводите) его как строку. А вы хотите проводить математические операции с нематематическим сущностями. Как-то немного запутанно получается.

Действительно интересно, возможно ли это. Сдается, что врядли, ведь флоат — это не 1.35000, а что-то вроде 1.35000124124512512581259283593857238905823782358723592308592385923905 где-то там далеко. Поэтому как дать понять php, сколько цифр из него вы хотите использовать без явного указания по средствам number_format или операции округления ?

Например, у меня сейчас выдается: 17,765, а я хочу чтобы выдавалось 17,7 или 17,76. Как сделать?

3 ответа 3

Важно: precision делает округление по правилам математики.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками c++ или задайте свой вопрос.

Связанные

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2019 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2019.11.15.35459

Ссылка на основную публикацию
Adblock detector