将n转换为0.n而不转换为字符串并返回

时间:2015-06-03 12:13:52

标签: math decimal

是否存在将整数值(n)转换为等于0.n的新十进制或浮点值的数学上合理且简单的方法?一个例子是将123作为输入并产生0.123。

我目前正在考虑的方式涉及:

  1. 将整数转换为字符串。
  2. 追加“0”到了字符串的前面。
  3. 将字符串转换为小数/浮点数。
  4. 但有没有办法做到这一点,而无需转换为字符串并返回不可能舍入错误

3 个答案:

答案 0 :(得分:2)

以下是这样,但是像往常一样,您需要依赖语言的浮动表示。避免舍入错误将取决于语言。

while (n>=1) {
    n /= 10.;
}
return n

答案 1 :(得分:2)

你发现"长度"具有对数函数的数字:

int length = (int)(Math.log10(n)+1);

然后你可以简单地将数字除以长度为10的数字:

double number = n / pow(10, length);

答案 2 :(得分:0)

您可以这样做:

decimal d = 0;

if(n < 10) d = 10
else if(n < 100) d = 100
else if(n < 1000) d = 1000
else if(n < 10000) d = 10000
else if(n < 100000) d = 100000
....

var result = n / d;