2015-07-07 3 views
0

У меня проблема в округлении числа с десятичной точностьюКак округлить десятичное число?

результат поиска Я получил только следующий ответ. выбрать раунд (1.12,1) требуется 1.10. выбрать раунд (1.15,1), так как 1.20.

Но мне нужен результат, как показано ниже.

Ex: 12.34 = 12.30 
Ex: 12.35 = 12.35 
Ex: 12.36 = 12.40 
Ex: 12.95 = 12.95 
Ex: 12.96 =13.00 

Pls помочь мне

Maideen

+1

Вы уверены, что 12.36 = 12.40 ?? если он не округляется до 12,35? –

+1

какое программное обеспечение вы говорите, SQL Server? MySQL? Oracle? Также, пожалуйста, определите именно то, что вам нужно. Похоже, вы пытаетесь объединиться с никелем (при условии доллара/цента). Если копейка приземляется на никель, то оставайся на месте, иначе округлите, если меньше никеля, и округлите, если больше никеля. Это правильно? – Greg

ответ

0

Я думаю, что это будет делать то, что вы хотите (на SQL Server.) И я не могу думать о более простым способом, с верхней части моей головы ,

round(x, 1, 1) + 
    0.05 * case round(x * 100, 0, 1) % 10 
     when 6 then 2 when 7 then 2 when 8 then 2 when 9 then 2 
     when 5 then 1 
     else 0 
    end 

Я думал об этом немного, и вы можете предпочесть этот вместо:

case round(x * 100, 0, 1) % 10 
     when 5 then round(x, 1, 1) + 0.05 -- truncate and add back the 0.05 
     else round(x, 1)     -- round normally 
    end 
1

Если я правильно понял вопрос правильно, и вы хотите, чтобы округлить до 0/5 в двух точках после того, как десятичные, я хотел бы сделать что-то вроде:

out = round(in * 20.0) * 0.05 

что, что в основном делает это умножив число in с 100 для работы с целыми числами, а не поплавками. Затем вы делите на 5 на круглые позиции только 0 или 5 (100/5 = 20). После округления вы умножаете 0.05 на результат, чтобы вернуть свой старый диапазон.

Вы можете изменить round на floor или ceil, если это было тем, что вы были после.

+0

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