Калькулятор округления значащих цифр
Подсчитайте количество значащих цифр в числе или округлите число до нужного количества значащих цифр. Для чисел в научной нотации используйте e-запись (например, 3.1415e5).
Логика вычислений
Калькулятор работает в двух режимах: «посчитать значащие цифры» (по введённому числу определяется, сколько в нём значащих цифр и какие именно) и «округлить до значащих цифр» (число приводится к заданному количеству значащих цифр). Число может быть записано как обычной десятичной записью, так и в научной нотации (например, 3.1415e5) — в последнем случае значащие цифры определяются только по мантиссе, показатель степени на их количество не влияет.
Подсчёт значащих цифр
Из числа берётся последовательность его цифр (мантисса без знака и без множителя 10ⁿ). Значащими считаются цифры, начиная с первой ненулевой, по следующим правилам:
- ведущие нули (стоящие до первой ненулевой цифры) — никогда не значащие;
- нули между значащими цифрами — всегда значащие;
- конечные нули после десятичной точки — значащие;
- конечные нули в целом числе без точки — не значащие (например, в 100 одна значащая цифра, в 100. — три).
После отбрасывания незначащих нулей остаётся строка значащих цифр, и количество значащих цифр равно её длине:
K = (число оставшихся значащих цифр)
где:
- K — количество значащих цифр в числе, шт.
Округление до значащих цифр
Чтобы округлить число до N значащих цифр, сначала определяется порядок числа — позиция его старшего разряда:
d = log₁₀ |x| (округляется вверх)
где:
- d — порядок числа (номер разряда старшей значащей цифры);
- x — исходное число.
По порядку числа и требуемому количеству значащих цифр вычисляется масштабный множитель, на который умножается число перед обычным округлением до целого, а затем результат делится обратно:
p = N − d M = 10ᵖ x_окр = round(x × M) / M
где:
- N — заданное количество значащих цифр, шт;
- p — степень масштабирования (на сколько разрядов сдвигается число до округления);
- M — масштабный множитель;
- x_окр — округлённое число;
- round(…) — округление до ближайшего целого.
Полученное значение приводится ровно к N значащим цифрам: при необходимости дописываются конечные нули (например, округление до 3 значащих цифр даёт 1.20, а не 1.2), чтобы итог отражал именно ту точность, которая запрошена.
Примеры расчётов
| Режим | Число x | N (задано) | Промежуточный расчёт | Результат | Комментарий |
|---|---|---|---|---|---|
| Подсчёт | 0.00450 | — | ведущие нули отброшены → «450», конечный ноль после точки значащий | K = 3 | Значащие цифры: 4, 5, 0 |
| Подсчёт | 100 | — | конечные нули в целом числе без точки не значащие → «1» | K = 1 | Только цифра 1 |
| Подсчёт | 100. | — | точка делает конечные нули значащими → «100» | K = 3 | Точка повышает точность |
| Подсчёт | 1.0080 | — | нули между значащими и конечный после точки значимы → «10080» | K = 5 | Все нули значащие |
| Подсчёт | 3.1415e5 | — | считается только мантисса 3.1415, показатель не влияет | K = 5 | Научная нотация |
| Округление | 3.14159 | 3 | d = ⌈log₁₀ 3.14159⌉ = 1; p = 3 − 1 = 2; M = 100; round(314.159)/100 | 3.14 | Обычный случай |
| Округление | 1.195 | 3 | d = 1; p = 2; M = 100; round(119.5) = 120; 120/100 | 1.20 | Дописан конечный ноль |
| Округление | 0.0023456 | 2 | d = ⌈log₁₀ 0.0023456⌉ = −2; p = 2 − (−2) = 4; M = 10000; round(23.456)/10000 | 0.0023 | Малое число, ведущие нули |
| Округление | 12345 | 3 | d = 5; p = 3 − 5 = −2; M = 0.01; round(123.45) = 123; 123/0.01 | 12300 | Округление крупного числа |
