在 DataWeave 中格式化时截断数字
Truncate number while formatting in DataWeave
有没有更短的方法可以在格式化时截断数字?看起来默认行为是舍入。现在我有这个:
var val = 123.129
---
{
def: val as String {format: "0.00"},
truncate:
(if(val > 0) (floor(val * 100)/100)
else (ceil(val * 100)/100)
) as String {format: "0.00"}
}
输出为
{
"def": "123.13",
"truncate": "123.12"
}
可以在类型转换中定义round模式:
down: 123.129 as String {format: "0.00", roundMode:"DOWN" }
模式基于 https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html 的名称。
另一种选择是做你所做的,但将其封装到一个可重用的函数中:
fun truncate(n,p) = do {
var power = 10 pow p
---
if (n>0) floor(n * power)/power
else ceil(n * power)/power
}
有没有更短的方法可以在格式化时截断数字?看起来默认行为是舍入。现在我有这个:
var val = 123.129
---
{
def: val as String {format: "0.00"},
truncate:
(if(val > 0) (floor(val * 100)/100)
else (ceil(val * 100)/100)
) as String {format: "0.00"}
}
输出为
{
"def": "123.13",
"truncate": "123.12"
}
可以在类型转换中定义round模式:
down: 123.129 as String {format: "0.00", roundMode:"DOWN" }
模式基于 https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html 的名称。
另一种选择是做你所做的,但将其封装到一个可重用的函数中:
fun truncate(n,p) = do {
var power = 10 pow p
---
if (n>0) floor(n * power)/power
else ceil(n * power)/power
}