#formatting #mule #dataweave
#форматирование #mule #хранилище данных
Вопрос:
Есть ли какой-либо более короткий способ усечения числа при его форматировании? Похоже, что поведение по умолчанию — округление. К настоящему времени у меня есть это:
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"
}
Ответ №1:
Вы можете определить режим округления при преобразовании типа:
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
}
Комментарии:
1. Я нашел поддерживаемый метод с использованием roundMode. Ответ обновлен.