如何在Groovy中舍入一个数字?我想保留2位小数.
例如(伪代码):
round(1.2334695) = 1.23
round(1.2686589) = 1.27
Run Code Online (Sandbox Code Playgroud)
Mat*_*hen 34
您可以使用:
Math.round(x * 100) / 100
Run Code Online (Sandbox Code Playgroud)
如果x是BigDecimal(Groovy中的默认值),这将是准确的.
joh*_*ith 29
如果你处理Double或浮动的
你可以简单地使用
assert xyz == 1.789
xyz.round(1) == 1.8
xyz.round(2) == 1.79
Run Code Online (Sandbox Code Playgroud)
sjt*_*tai 18
使用mixin.
class Rounding {
public BigDecimal round(int n) {
return setScale(n, BigDecimal.ROUND_HALF_UP);
}
}
Run Code Online (Sandbox Code Playgroud)
将此添加到您的启动类,round()是BigDecimal的第一类方法:
BigDecimal.mixin Rounding
Run Code Online (Sandbox Code Playgroud)
测试用例:
assert (new BigDecimal("1.27")) == (new BigDecimal("1.2686589").round(2))
assert (1.2686589).round(2) == 1.27
assert (1.2334695).round(2) == 1.23
Run Code Online (Sandbox Code Playgroud)
Sea*_*oyd 12
像这样:
def f = 1.2334695;
println new DecimalFormat("#.##").format(f);
Run Code Online (Sandbox Code Playgroud)
或者像这样:
println f.round (new MathContext(3));
Run Code Online (Sandbox Code Playgroud)
输出:
1.23
参考:格式化十进制数
10G*_*per 10
Groovy round()为Double和Float类添加了一个方法,因此:
(123.456789f).round(2) == 123.46f
Run Code Online (Sandbox Code Playgroud)
来源:Groovy中的舍入数字
可能更多的Groovysh方式是使用这样的代码片段(x as double).round(2):
def a = 5.2355434
println "a = $a, a.class = ${a.getClass()}"
def b = (a as double).round(2)
println "b = $b, b.class = ${b.getClass()}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73642 次 |
| 最近记录: |