Округление до младшего разряда с использованием функции int - PullRequest
0 голосов
/ 15 августа 2011

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

  1. Как мне найти наименее значимую цифру?
  2. Получив эту цифру, я должен определить, является ли она> 5 или меньше 5.
  3. Если оно больше или равно 5, тогда мне нужно проверить следующую цифру и увеличить ее, если она больше 5, пока я не доберусь до десятичной точки и не использую то же самое определение для числа (но как целое число, так что если оно равно 65,444445, то оно должно быть 66, я думаю) справа от десятичного знака. По крайней мере, в этом есть смысл, но, может быть, я слишком усложняю это?

1 Ответ

2 голосов
/ 15 августа 2011

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

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

Если, например, вы решили, что должно быть 4 значащих цифры, то младшая цифра - это четвертая цифра.

Число 1234567890 (10 цифр) может быть округлено до этой цифры:

  • умножение на 10 ^ -6, что дает 1234,567890
  • делает целочисленный раунд, который вы обнаружили, давая 1235
  • умножение на 10 ^ 6, что дает 1235000000.

Третье: Вы слишком усложняете это. 65,444445 ближе к 65 , чем к 66 . Это меньше, чем 65,5, что является средней точкой между 65 и 66.

...