BigDecimal billAmount = BigDecimal.ZERO; 解释一下
时间: 2023-09-11 13:10:44 浏览: 41
这段代码的作用是创建了一个BigDecimal类型的变量billAmount,并将其初始化为0。BigDecimal是Java中用于处理高精度小数运算的类,相比于double和float类型,它可以精确表示任意位数的小数,并避免了浮点数运算精度错误的问题。在这段代码中,将billAmount初始化为0可以确保在后续计算中,billAmount的初始值为零。
相关问题
BigDecimal bd= BigDecimal.ZERO; 如何累加
您可以使用 `bd = bd.add(newValue)` 来累加 `BigDecimal` 对象。例如,如果您想将 `BigDecimal` 对象 `newValue` 加到 `bd` 中,您可以这样写:
```
BigDecimal bd = BigDecimal.ZERO;
bd = bd.add(newValue);
```
这将把 `newValue` 加到 `bd` 中,并将结果存回 `bd` 中。您可以反复调用 `add` 方法来累加多个值,例如:
```
BigDecimal bd = BigDecimal.ZERO;
bd = bd.add(new BigDecimal("10"));
bd = bd.add(new BigDecimal("20"));
bd = bd.add(new BigDecimal("30"));
```
这将把 10、20 和 30 加到 `bd` 中,最终的值将是 60。
String sql2 = “SELECT as, bs, cs, ds, es, qs FROM b_table”; PreparedStatement stmt2 = conn.prepareStatement(sql2); ResultSet rs2 = stmt2.executeQuery(); BigDecimal as_current = BigDecimal.ZERO; BigDecimal bs_current = BigDecimal.ZERO; BigDecimal cs_current = BigDecimal.ZERO; BigDecimal ds_current = BigDecimal.ZERO; BigDecimal es_current = BigDecimal.ZERO; BigDecimal qs_current = BigDecimal.ZERO; if (rs2.next()) { as_current = rs2.getBigDecimal(“as”); bs_current = rs2.getBigDecimal(“bs”); cs_current = rs2.getBigDecimal(“cs”); ds_current = rs2.getBigDecimal(“ds”); es_current = rs2.getBigDecimal(“es”); qs_current = rs2.getBigDecimal(“qs”); } rs2.close(); stmt2.close();b表里的数据是小数,请问这段代码查出来为什么是null,已知字段类型是varchar,指出原因并改正
这段代码查询出来的结果为null是因为查询出来的数据类型是小数类型,而变量的初始值是字符串类型的,无法将小数类型赋值给字符串类型的变量。要改正这个问题,需要将变量的类型从字符串类型改为BigDecimal类型,代码如下所示:
```
String sql2 = “SELECT as, bs, cs, ds, es, qs FROM b_table”;
PreparedStatement stmt2 = conn.prepareStatement(sql2);
ResultSet rs2 = stmt2.executeQuery();
BigDecimal as_current = BigDecimal.ZERO;
BigDecimal bs_current = BigDecimal.ZERO;
BigDecimal cs_current = BigDecimal.ZERO;
BigDecimal ds_current = BigDecimal.ZERO;
BigDecimal es_current = BigDecimal.ZERO;
BigDecimal qs_current = BigDecimal.ZERO;
if (rs2.next()) {
as_current = rs2.getBigDecimal(“as”);
bs_current = rs2.getBigDecimal(“bs”);
cs_current = rs2.getBigDecimal(“cs”);
ds_current = rs2.getBigDecimal(“ds”);
es_current = rs2.getBigDecimal(“es”);
qs_current = rs2.getBigDecimal(“qs”);
}
rs2.close();
stmt2.close();
```
注意,需要将变量的初始值设置为BigDecimal类型的0,而不是字符串类型的0。