将整数/小数点数组转换为单个数字

时间:2014-03-30 02:01:33

标签: java arrays

我想知道是否有办法获取整数数组(可能还有小数点)并将它们转换为单个数字(intdouble)?例如,如果我有数组{4,1,。,9},是否可以将其转换为double,41.9?我正在实现一种通过迭代和* 10来实现各种功能的方法,但是我不确定它是否会因为舍入错误等而有效(它会计算即9 *(10 ^ -1)一直都正确吗?)。

2 个答案:

答案 0 :(得分:0)

仅当数组中的可能值非常有限(例如09)并且元素数量不是那么大时才有效。

以下算法可以做到这一点:

long l = 0x00;
int[] array = {5,2,3,6,7,8};
int radix = 9;
for(int i = 0x00; i < array.length; i++) {
    l *= radix;
    l += array[i];
}
return l;

其中,基数是最大值+1

然而,即便如此,long的最大值为2^63-19 223 372 036 854 775 807。这意味着如果每个项目的可能值数量为10,则只能存储17个项目。


double无法解决问题。由于double使用浮点语义,因此它们只能存储大约。 12位小数正确。如果您以双倍的方式存储更多信息,信息最终会丢失。最不重要的值会发生什么变化取决于较大的值(因为0将生成最低有效位的时间的一半,而在另一种情况下生成1

答案 1 :(得分:0)

我想一个快速而肮脏的解决方案是将整数和点的数组(在这种情况下,您可能有一个像这样的char数组:{'4','1','.','9'})转换为字符串"41.9",然后使用Double.parseDouble(s)将您的字符串解析为double。但它不会很快。