2010-07-23 4 views
3

Как увеличить число до десяти, сто тысяч и т. Д.Масштабирование номера

Ex.

num = 11 round up to 20 
num = 15 round up to 20 
num = 115 round up to 200 
num = 4334 round up to 5000 
+4

Какой язык? Отправьте код, который у вас есть. Это не www.do_my_homework_for_me.com –

ответ

2

Я думаю, что эта формула может работать? Если у вас больше примеров для показа.

power = floor(log10(n)) 
result = (floor(n/(10^power)) + 1) * 10^power 
+0

Это не сработает, если вы сделали 15, он вернется для результата ((15/10) + 1) * 10, который равен 25 –

+0

@ Rafe Kettler это работает, если вы выполняете целочисленное деление или do Math.Floor (15/10) – Arizona1911

+0

Да, я имел в виду целочисленное деление. Он был обновлен, чтобы быть более явным. – CookieOfFortune

1

Преобразование числа в десятичной системе (т.е. 11 идет к 1,1, 115 идет до 1,15), а затем взять потолок числа, а затем умножить его обратно. Пример:

public static int roundByScale(int toRound) { 
    int scale = (int)Math.pow(10.0, Math.floor(Math.log10(toRound))); 
    double dec = toRound/scale; 
    int roundDec = (int)Math.ceil(dec); 
    return roundDec * scale; 
} 

В этом случае, если вы вход 15, он будет разделен на 10, чтобы стать 1,5, то округляется до 2, то этот метод будет возвращать 2 * 10, который является 20.

+0

Не работает для 10 ** n. – joel3000

+0

сейчас. –

1
import math 

exp = math.log10(num) 
exp = math.floor(exp) 
out = math.ceil(num/10**exp) 
out = out * 10**exp 
0
public static int ceilingHighestPlaceValue(int toCeil) 
{ 
    int placeValue = Math.Pow(10,toCeil.ToString().Length()-1); 
    double temp = toCeil/placeValue; 
    return= ceil(temp) * placeValue; 
} 
Смежные вопросы