Как сделать точность до 2 знаков

Добавил пользователь Валентин П.
Обновлено: 04.10.2024

Я хочу глобально установить точность выходного сигнала до 2 десятичных знаков.

Я уже пытался использовать iomanip а также setprecision Тем не менее, я продолжаю получать вывод с ‘е’ в нем.

Это мой пример кода:

Решение

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

Вы можете использовать что-то вроде этого:

Вам нужно будет включить iomanip, чтобы это работало.

Если ваш e является положительным значением, вы не можете использовать их, потому что ваше значение слишком велико. Этот код

Если это отрицательное число, вашей точности недостаточно. Как следующий код

Простым способом будет использование std :: fixed

Но недостаток, который вы испытываете при использовании std :: fixed, заключается в том, что он показывает ноль после последнего ненулевого числа до тех пор, пока не достигнет установленной ранее величины preprecy.

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

Виды чисел

На практике приходится работать с числами двух видов, с точными и приближенными.

Точные

Хранение данных и пересчет формул, которые поддерживаются приложением Excel составляют 15 разрядов. Числовые значения хранятся с точностью 15 разрядов, а отображаться на экране могут по-разному, в зависимости от выбранного формата. Для расчетов используются хранимые, а не отображаемые значения. При работе с различными числовыми значениями может понадобиться разная степень точности в вычислениях.

Приближенные

Существует множество задач, решение которых не требует большого количества знаков после запятой в числовых значениях. Например, при работе с денежными единицами достаточно двух знаков после запятой, а при работе со среднесписочной численностью людей знаки после запятой вообще не нужны. Таким образом, при расчетах в Excel возникает необходимость в округлении определенных результатов вычислений.

Что такое округление?

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

Существуют различные способы округления, такие как округление к большему, округление к меньшему, округление к большему по модулю, округление к меньшему по модулю, случайное округление, чередующееся округление, ненулевое округление, банковское округление.

Остановимся на способах округления и отображения числовых значений, используемых в Excel.

Изменение количества отображаемых знаков после запятой без изменения числового значения

как увеличить и уменьшить разрядность в Excel

В других версиях Excel эти кнопки выглядят аналогично. Изменения в настройки числового формата, а именно увеличение либо уменьшение количества отображаемых знаков после запятой, можно внести в настройках формата ячеек. Не буду повторять о том, как вызвать окно "Формат ячеек" разными способами, так как ранее этот вопрос уже рассматривался. Использование вышеописанного метода округления может приводить к некоторым нежелательным последствиям, например вот к такому:

изменение количества отображаемых знаков в Excel

Как видно из примера, некорректная настройка числового формата привела к тому, что 2+3=6, что неверно.

Задать точность как на экране

задать в Excel точность как на экране

*Применение опции "Задать точность как на экране" ведет к изменению числовых значений и точности вычислений.

Округление числовых значений с помощью функций

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

функции округления в Excel

Функция ОКРУГЛ(число;число_разрядов) округляет число до указанного количества десятичных разрядов по классическим правилам математического округления;

Функция ОКРУГЛВВЕРХ(число;число_разрядов) округляет число с избытком до ближайшего большего по модулю;

Функция ОКРУГЛВНИЗ(число;число_разрядов) округляет число с недостатком до ближайшего меньшего по модулю;

Функция ОКРВВЕРХ(число;точность) округляет с избытком число до ближайшего целого либо до ближайшего кратного указанному значению

Функция ОКРВНИЗ(число;точность) округляет с недостатком число до ближайшего целого либо до ближайшего кратного указанному значению.

Кроме вышеперечисленных функций, в стандартных средствах Excel есть еще такие функции, связанные с округлением, как

Функция ЧЕТН(число) округляет число до ближайшего четного целого. При этом положительные числа округляются в сторону увеличения, а отрицательные – в сторону уменьшения;

Функция НЕЧЁТ(число) округляет число до ближайшего нечетного целого. Положительные числа округляются в сторону увеличения, а отрицательные – в сторону уменьшения;

Функция ОТБР(число) округляет число до целого, отбрасывая дробную часть.

Формат ячейки может предопределять отображаемый результат функции, например, если число округлено функцией ОКРУГЛ до трех десятичных разрядов, а в формате ячейки указан числовой формат с двумя знаками после запятой, то при отображении результата на экране определяющее действие будет оказывать формат ячейки.

Примеры использования функций округления

=ОКРУГЛ(1,475;2) Округляет число 1,475 до двух десятичных разрядов, в результате получается 1,48;

=ОКРУГЛВВЕРХ(3,14159;3) Округляет с избытком число 3,14159 до трех десятичных разрядов, результат 3,142;

=ОКРУГЛВНИЗ(3,14159) Округляет с недостатком число 3,14159 до трех десятичных разрядов, результат 3,141;

=ОКРУГЛТ(10;3) Округляет число 10 до ближайшего числа, кратного 3, то есть до 9;

=ОКРВВЕРХ(2,5;1) Округляет число 2,5 до ближайшего большего числа, кратного 1, то есть до 3;

=ОКРВНИЗ(2,5;1) Округляет число 2,5 до ближайшего меньшего числа, кратного 1, то есть до 2.

Для того, чтобы избежать возможных неточностей и ошибок, следует тщательно подбирать форматы и способы округления при формировании таблиц в Excel. Если же таблицы уже сформированы не совсем так, как вам бы этого хотелось, то табличные данные можно программно обработать средствами VBA, прибегнув к помощи макросов.

Быстрое округление числовых значений в Excel без использования формул

Надстройка, в которой объединены все основные способы округления, поможет заменить числа в ячейках их округленными значениями, минуя этап ввода формул. Пользователь может на свое усмотрение выбрать диапазон и способ округления, все остальное за него сделает программа.

Возможности надстройки позволяют:

1. Одним кликом мыши вызывать диалоговое окно прямо из панели инструментов Excel;

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

3. быстро выбирать на одной из трех вкладок диалогового окна нужный способ округления и задавать его точность (доступно 9 способов);

4. легко изменять область для поиска и замены чисел их округленными значениями.

Ниже приведен результат округления диапазона ячеек с числовыми значениями до целых чисел с использованием опции "ОКРУГЛ" и количеством знаков после запятой равным нулю.

У меня есть эта строка кода, которая округляет мои числа до двух десятичных знаков. Но я получаю такие числа: 10,8, 2,4 и т. Д. Это не мое представление о двух десятичных знаках, так как я могу улучшить следующее?

Я хочу цифры как 10.80, 2.40 и т. Д. Использование JQuery хорошо для меня.

Ваш код - именно то, что я искал (чтобы уменьшить точность с плавающей точкой до 7 десятичных знаков для меньшего файла JSON). Пропуск Math.pow для скорости val = Math.round (val * 10000000) / 10000000);

После правильного округления с помощью метода смещения десятичных знаков и округления вы можете использовать этот number.toFixed(x) метод для преобразования его в строку с необходимым количеством нулей. Например, округлить 1.34 до 1.3 кросс-браузерным методом, затем добавить 1 ноль и преобразовать в строку с помощью 1.3.toFixed(2) (чтобы получить "1.30" ).

Чтобы отформатировать число с использованием записи с фиксированной запятой, вы можете просто использовать метод toFixed :

Обратите внимание, что toFixed() возвращает строку.

ВАЖНО : обратите внимание, что toFixed не округляет 90% времени, он возвращает округленное значение, но во многих случаях это не работает.

В качестве альтернативы вы можете использовать toLocaleString метод, который внутренне будет использовать Intl API:

Этот API также предоставляет вам широкий выбор вариантов форматирования, например, разделители тысяч, символы валюты и т. Д.

В большинстве случаев это плохая идея, в некоторых случаях она преобразует число в строку или число с плавающей точкой.

Согласитесь с @AshBlue здесь . это безопасно только для форматирования представления значений. Может нарушить код с дальнейшими расчетами. В противном случае Math.round(value*100)/100 лучше работает для 2DP.

Это старая тема, но она по-прежнему занимает первое место в результатах поиска Google, и предлагаемые решения имеют ту же проблему с десятичными числами с плавающей запятой. Вот (очень общая) функция, которую я использую, благодаря MDN :

Как мы видим, мы не получаем эти проблемы:

Эта универсальность также предоставляет некоторые интересные вещи:

Теперь, чтобы ответить на вопрос ОП, нужно набрать:

Или, для более краткой, менее общей функции:

Вы можете позвонить с помощью:

Спасибо за публикацию полифилла MDN. На связанной MDN-странице больше не заполнен polyfill. Интересно, почему это было удалено .

Я обычно добавляю это в свою личную библиотеку, и после некоторых предложений и использования решения @TIMINeutron, а затем, делая его адаптируемым для десятичной длины, этот вариант подходит лучше всего:

@Imre Измените возвращаемое значение на (Math.round (num * Math.pow (10, десятичные дроби)) / Math.pow (10, десятичные дроби)). ToFixed (2); и у вас больше не будет этой проблемы.

где вы объявляете "sign" и "dec", если ваша вторая функция выбрана как есть, разве они не должны быть неопределенными?

@Armin Ваше исправление также заставляет его работать в Safari. Оригинальная функция не работала в Safari.

Я не знаю, почему я не могу добавить комментарий к предыдущему ответу (возможно, я безнадежно слеп, не знаю), но я нашел решение, используя ответ @ Miguel:

И два комментария (от @bighostkim и @Imre):

  • Проблема с precise_round(1.275,2) невозвращением 1.28
  • Проблема с precise_round(6,2) не возвращением 6,00 (как он хотел).

Мое окончательное решение заключается в следующем:

После этого я добавил, .toFixed(decimal) чтобы всегда выводить число в правильном формате (с правильным количеством десятичных знаков).

Вот и все. Используйте это хорошо;)

На самом деле, спецификация языка довольно специфична для использования 64-битных числовых значений, поэтому наличие / использование суперкомпьютера ничего не изменит :)

Один из способов на 100% быть уверенным, что вы получите число с двумя десятичными знаками:

Если это вызывает ошибки округления, вы можете использовать следующее, как объяснил Джеймс в своем комментарии:

toFixed (n) предоставляет n длины после десятичной точки; toPrecision (x) обеспечивает x общую длину.

Используйте этот метод ниже

И если вы хотите, чтобы номер был фиксированным, используйте

это не работает хорошо . для числа num = 50.2349 вы должны написать в Precision (3), чтобы получить 50.2

Я не нашел точного решения этой проблемы, поэтому я создал свое собственное:

не работает для значения = 0,004990845956707237 и inprecise_round (value, 8) возвращает 0,00499085, но должно возвращать 0,00499084

@heridev и я создали небольшую функцию в jQuery.

Вы можете попробовать следующее:

Я могу оценить этот вклад, хотя я думаю, что добавление DOM-элементов и jQuery в микс кажется вне рамок вопроса.

Вы не должны слушать событие keyup, так как оно выглядит очень плохо и не активируется, когда вы добавляете что-то с помощью скрипта. Я бы лучше послушал input событие. Это не создает мерцающего эффекта, а также срабатывает при доступе к полю с помощью JS

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

Когда компьютер хранит 1,275 как значение с плавающей запятой, он на самом деле не будет помнить, было ли это 1,275 или 1,27499999999999993 или даже 1,27500000000000002. Эти значения должны давать разные результаты после округления до двух десятичных знаков, но они не будут, поскольку для компьютера они выглядят точно так же после сохранения в виде значений с плавающей запятой, и нет никакого способа восстановить потерянные данные. Любые дальнейшие вычисления только накапливают такую ​​неточность.

Так что, если точность имеет значение, вы должны избегать значений с плавающей точкой с самого начала. Самые простые варианты

  • использовать выделенную библиотеку
  • использовать строки для хранения и передачи значений (сопровождается строковыми операциями)
  • используйте целые числа (например, вы можете передавать сумму, равную сотым от вашей фактической стоимости, например, сумма в центах вместо суммы в долларах)

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

Со строками вам понадобится округление, но оно все еще управляемо:

Обратите внимание, что эта функция округляет до ближайшего, связывает от нуля , в то время как IEEE 754 рекомендует округлять до ближайшего, даже в качестве поведения по умолчанию для операций с плавающей запятой. Такие модификации оставлены в качестве упражнения для читателя :)

Чтобы упростить расчеты, можно самостоятельно настроить формат чисел в Excel: для этого существует целых 3 основных способа и множество разных вариантов получения округленных чисел.


Как работает округление чисел в Эксель: принципы и настройки

Выполняя деление или вычисления с дробями, числа в программе Эксель автоматически округляются. Слишком высокая точность на самом деле редко бывает необходима для получения нужного результата. Кроме того, расчеты с большим количеством знаков после запятой отличаются высокой сложностью и увеличивают нагрузку на ПК. Хотя можно столкнуться с операциями, когда точность имеет серьезное значение — или, наоборот, вообще не нужна.

Принципы округления в Excel

Числа, которыми оперирует при расчетах и выполнении других действий табличный редактор Excel, могут быть приближенными или точными. Число хранящихся в памяти разрядов достигает 15, а в программе отображаются знаки с указанной пользователем точностью. Хотя все формулы по умолчанию рассчитываются с учетом настоящих, а не округленных значений.


Принципы округления зависят от выбранного способа. Но в большинстве случаев применяется стандартный: числа от 5 до 9 округляются в большую сторону, а от 1 до 4 — в меньшую. Так, например, при округлении в Эксель до целого 1,4 превратится в 1, а 1,5 — уже в 2. Тогда как специальные функции позволяют выбирать и другие варианты округления, на которые влияют и разрядность, и знак, и даже то, являются числа целыми или дробными.

Способ 1. Иконки на ленте

Проще и быстрее всего округлять в Excel, пользуясь специально предназначенными для этого иконками. Они находятся в разделе чисел и выглядят как три ноля с точками и стрелкой, направленной в соответствии со стороной, в которую нужно изменить разрядность.

Влево — число разрядов будет увеличено, и, например, 3,777 превратится в 3,7770. Стрелка вправо при нажатии уберет 1 разряд — и вместо 3,777 в ячейке останется округленное значение 3,78.


Стоит отметить, что при расчетах для программы не будет иметь значения, сколько разрядов отображается в ячейке. Эксель посчитает все с точностью до 15-й цифры. И при умножении округленного числа 2,777, например, на 2, результатом станет не 7,56, а 7,5554.


Способ 2. Изменение формата

При округлении в Эксель есть возможность настройки разрядности при изменении формата ячеек. Причем, доступна она и для таблицы в целом, и для выбранного диапазона (для любого количества строк или столбцов, прямоугольной или даже произвольной по форме области).
Для этого необходимо выделение ячеек, в которых округляется отображение чисел, и перейти к пункту формата в меню, выпадающем при нажатии правой кнопки мышки.


Выбрав правильный формат, следует указать в правой части окна, сколько десятичных знаков будет показываться. Так, выбрав 0, можно получить из 3,777 целое число 4, а указав 2 — 3,78. Правда, при вычислениях, опять же, будет применяться настоящее значение, а не то, которое увидит на экране пользователь.


Чтобы изменить ситуацию и обеспечить использование в формулах тех чисел, которые отображаются на экране, пользователю придется настроить точность выполнения расчетов. Для этого придется выполнить такие действия:


После выполнения этих действий процесс округления в Excel изменится. И учитываться будет те величины, которые выводятся на экран, а не данные из памяти программы. Поэтому, настраивая отображение, можно рассчитывать, что в формуле округления в Эксель будут учтены результаты округления. А, значит, точность расчетов станет такой, какой она нужна пользователю.

Способ 3. Специальные функции

Кроме двух способов как округлить число в Excel, подходящих только для одного числа, есть методики, позволяющие пользоваться округленными величинами в расчетах. Для этого в список возможностей программы включены такие функции округления в Excel:


  • ОКРВНИЗ.МАТ — аналог предыдущей функции, но с округлением в меньшую сторону.

Для получения формулы округления в Excel до целого числа применяются еще три функции. ОТБР просто округляет данные до целого числа. ЧЕТН округляет в сторону ближайшего четного числа. А НЕЧЕТН дает возможность округлить данные до нечетных чисел.

8 бесплатных альтернатив Microsoft Office: офис без затрат

Несколько способов ввода формул


На экране появится небольшое окно для ввода аргументов. В поле числа следует ввести или округляемую величину, или указать, в какой ячейке оно находится. После этого можно поставить то количество знаков после запятой, до которого округляется число. Ставить значение разрядности следует в поле разрядов.


Число в ячейке округлилось. Но для того, чтобы сделать то же самое с целым столбцом или прямоугольной областью, следует скопировать формулу. Для этого необходимо навести курсор на нижний правый угол ячейки, нажать и протянуть в нужном направлении. После этого округленными окажутся все значения.

Читайте также: