是否存在将整数值(n)转换为等于0.n的新十进制或浮点值的数学上合理且简单的方法?一个例子是将123作为输入并产生0.123。
我目前正在考虑的方式涉及:
但有没有办法做到这一点,而无需转换为字符串并返回不可能舍入错误?
答案 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;