Java - 将字符串转换为具有10个或更多小数的double

时间:2015-10-26 18:26:22

标签: java

如何将40,123.012345678901等字符串转换为double

double d = Double.parseDouble("40,123.012345678901"); 

抛出数字格式异常。

由于

5 个答案:

答案 0 :(得分:2)

如果没有办法摆脱逗号(,),你可以使用另一种方法:

NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("40,123.012345678901");
double d = number.doubleValue();

答案 1 :(得分:1)

最简单的方法是删除逗号:

Drupal.behaviors.exampleModule = {
  attach: function (context, settings) {
       urlInfo = parseURL(window.location.href);
       $(urlInfo.hash).show();         
  }
};

function parseURL(url) {
    var parser = document.createElement('a'),
        searchObject = {},
        queries, split, i;

    parser.href = url;
    // Convert query string to object
    queries = parser.search.replace(/^\?/, '').split('&');
    for( i = 0; i < queries.length; i++ ) {
        split = queries[i].split('=');
        searchObject[split[0]] = split[1];
    }
    return {
        protocol: parser.protocol,
        host: parser.host,
        hostname: parser.hostname,
        port: parser.port,
        pathname: parser.pathname,
        search: parser.search,
        searchObject: searchObject,
        hash: parser.hash
    };
}

答案 2 :(得分:1)

double限制在大约16位精度。如果您需要更高的精度,则应使用BigDecimal。

BigDecimal bd = new BigDecimal("40,123.012345678901".replace(",", "")); 

答案 3 :(得分:0)

您应该从字符串中删除逗号(,):

这将有效:

float

答案 4 :(得分:0)

使用NumberFormat获取double值,

    try {
        NumberFormat format = NumberFormat.getInstance();
        Number parse = format.parse("40,123.012345678901");
        System.out.println(parse.doubleValue());
    } catch (ParseException ex) {
        System.out.println(ex.getMessage());
    }