Округление в большую или меньшую сторону с десятичными дробями в Excel

#excel #excel-formula #decimal #excel-2007 #digits

#excel #excel-формула #десятичная #excel-2007 #цифры

Вопрос:

Мне нужна помощь в округлении с десятичными дробями в Excel.

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

3.82 —> 3.85

5.38 —> 5.39

2.96 —> 2.95

9.45 —> 9.45 (остается прежним)

9.06 —> 9.05

11.48 —> 11.49

6.12 —> 6.15

5.32 —> 5.35

Если вы видите, у меня есть значения, которые заканчиваются на .06, .38, .12, но я хочу, чтобы они заканчивались на ближайших 9 или 5

Уже пробовал формулы округления, но не сработало

Комментарии:

1. Вы всегда округляете на 2 цифры?

2. Итак, какова логика того, что 5.32 будет 5.35 вместо 5.29? Оба значения будут смещены на 0,03.

3. Я за цену, поэтому мы хотели бы увеличить цену, а не потерять.

Ответ №1:

Вот еще одно решение:

 =(MROUND(A1*1000 5,50)-IF(MOD(MROUND(A1*1000 5,50),100)=0,10))/1000
  
  • Умножение на 1000 позволяет нам работать с целыми числами, что позволяет избежать проблем с округлением, которые могут возникнуть при работе с десятичными числами. Предполагается, что ваши значения имеют только два десятичных знака. Если их больше, может потребоваться небольшая корректировка.(например, измените A1*1000 5 на ROUND(A1*1000,0) 5
  • Добавьте 5 , поскольку ваш алгоритм округления смещен от фактической средней точки
  • Округление до ближайшего 50
    • Если ближайшее 50 значение кратно 100 , то вычтите 10
  • Разделите на 1000 , чтобы вернуть исходное значение, округленное в соответствии с вашим алгоритмом

введите описание изображения здесь

Комментарии:

1. Это очень аккуратно!!

Ответ №2:

Это была забавная головоломка:

 =IF(ABS(A1-(ROUND(A1,1)-0.01))=ABS(A1-IF(ABS(A1-(ROUND(A1,1) 0.05))<ABS(A1-(ROUND(A1,1)-0.05)),ROUND(A1,1) 0.05,ROUND(A1,1)-0.05)),MAX(A1-(ROUND(A1,1)-0.01),IF(ABS(A1-(ROUND(A1,1) 0.05))<ABS(A1-(ROUND(A1,1)-0.05)),ROUND(A1,1) 0.05,ROUND(A1,1)-0.05)),IF(ABS(A1-(ROUND(A1,1)-0.01))<ABS(A1-IF(ABS(A1-(ROUND(A1,1) 0.05))<ABS(A1-(ROUND(A1,1)-0.05)),ROUND(A1,1) 0.05,ROUND(A1,1)-0.05)),ROUND(A1,1)-0.01,IF(ABS(A1-(ROUND(A1,1) 0.05))<ABS(A1-(ROUND(A1,1)-0.05)),ROUND(A1,1) 0.05,ROUND(A1,1)-0.05)))
  

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

введите описание изображения здесь