Так как вы пытаетесь уменьшить число, вы не можете просто разделить на 10 (1 десятичный знак), 100 (2 десятичных знака), 1000 (3 десятичных знака) и т. Д.
Обратите внимание нашаблон еще?Увеличивая цифры справа от десятичного разряда, мы также увеличиваем начальное значение, которое делится (10 на 1 цифру после десятичного знака, 100 на 2 цифры после десятичного разряда и т. Д.), В десять раз.
Таким образом, шаблон означает, что мы имеем дело со степенью 10 (Math.Pow(10, x)
).
Учитывая вход (число десятичных разрядов), сделайте преобразование на основе этого.
Пример:
int x = 1956;
int powBy=3;
decimal d = x/(decimal)Math.Pow(10.00, powBy);
//from 1956 to 1.956 based on powBy
Сказав это, оберните его в функцию:
decimal IntToDec(int x, int powBy)
{
return x/(decimal)Math.Pow(10.00, powBy);
}
Назовите это так:
decimal d = IntToDec(1956, 3);
Идя в противоположном направлении
Вы также можете сделать обратное, если кто-то заявил, что хочет взять десятичное число, например 19,56, и преобразовать его в int
.Вы по-прежнему будете использовать механизм Pow
, но вместо деления вы умножите.
double d=19.56;
int powBy=2;
double n = d*Math.Pow(10, powBy);