Увеличение числа - PullRequest
       12

Увеличение числа

3 голосов
/ 23 июля 2010

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

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 ]

2 голосов
/ 23 июля 2010

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

power = floor(log10(n))
result = (floor(n/(10^power)) + 1) * 10^power
1 голос
/ 24 июля 2010
import math

exp = math.log10(num)
exp = math.floor(exp)
out = math.ceil(num/10**exp)
out = out * 10**exp
1 голос
/ 23 июля 2010

Преобразуйте число в десятичное число (т. Е. 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 голосов
/ 24 июля 2010
public static int ceilingHighestPlaceValue(int toCeil) 
{
    int placeValue = Math.Pow(10,toCeil.ToString().Length()-1);
    double temp = toCeil / placeValue;
    return= ceil(temp) * placeValue; 
}
...