将字符串(表示十进制数)转换为long

时间:2012-10-26 15:26:48

标签: java string parsing converter long-integer

我已经搜索了一下,但找不到找到解决方案的示例。这是我的问题:

String s = "100.000";
long l = Long.parseLong(s);

第二行代码尝试将字符串's'解析为long,抛出 NumberFormatException

有解决方法吗?问题是表示十进制数的字符串实际上是以毫秒为单位的时间,因此我无法将其强制转换为int,因为我失去了精度。

7 个答案:

答案 0 :(得分:4)

你可以使用BigDecimal来处理双重解析(没有Double.parseDouble()可能带来的精确丢失的风险):

BigDecimal bd = new BigDecimal(s);
long value = bd.longValue();

答案 1 :(得分:4)

因为我不知道你的100.000等于100或10万 我认为最安全的解决方案是:

NumberFormat nf = NumberFormat.getInstance();
Number number = nf.parse("100.000");
long l = number.longValue();

答案 2 :(得分:2)

'long'是一个整数类型,因此String解析因小数点而被拒绝。选择更合适的类型可能会有所帮助,例如双倍。

答案 3 :(得分:0)

只需删除千位的所有空间持有者,点......

s.replaceAll(".","");

答案 4 :(得分:0)

您应该使用NumberFormat来解析值

答案 5 :(得分:0)

我们可以使用正则表达式来修剪小数部分。然后使用parseLong

Long.parseLong(data.replaceAll(" \ .. *",""));

答案 6 :(得分:-2)

如果您不想失去精确度,那么您应该使用multiplication

    BigDecimal bigDecimal = new BigDecimal("100.111");
    long l = (long) (bigDecimal.doubleValue() * 1000);<--Multiply by 1000 as it
                                                         is miliseconds
    System.out.println(l);

输出:

100111
相关问题