有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用Java BigDecimal表示15精度的数字(比例为2)

我找到了部分答案,但我已经知道了。所以我决定发布一个新问题

我正在尝试将HTTP请求参数字符串转换为15精度的Java BigDecimal数字(比例为2)。比如说,

String x = request.getParameter("seqNo"); /* e.g. 12345678910111213141516.17181920 whatever */
// I want to convert x so that it has a precision of 15 and scale of 2 i.e. 111213141516.17.

我不在乎四舍五入。这是一种参考数,与四舍五入无关。我知道可以通过使用重载的setScale(int)方法来设置缩放,该方法将返回一个缩放的(截断的?)大十进制。但如何确保正确设置精度


共 (1) 个答案

  1. # 1 楼答案

    改用子字符串怎么样?无论如何,这不是一个真正的数字

    int pos = x.indexOf('.');
    String y = x.substring(pos - 12, pos + 3);
    

    如果你真的疯了,想把它当作数字来处理(四舍五入中的冲突和差异迟早会让你抓狂的!),你可以这样做

    double v = Double.parseDouble(y); // REALLY REALLY REALLY NOT RECOMMENDED.
    

    但是这是一个非常非常的坏主意。不要在数字列中挤进而不是数字的内容。下周,你会得到两个点的数字,它会以各种可能的方式打破

    如果您不需要进行数学计算,将此类字段视为VARCHARTEXT是完全可以接受的。因为这就是它:一系列的字符。不是数字

    事实上,我强烈建议将整数存储为VARCHAR。它是一个唯一标识符,而不是用于计算的数学数字