Хотите динамически поместить десятичную точку в заданную 18-значную строку (представляющую количество) - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть две переменные, то есть количество (18 символов) и точность (2 цифры).Я хочу поместить десятичную точку в сумму, основанную на значении точности.
Допустим, сумма = 100000000000000000 и точность = 2, затем с помощью dwl я хочу преобразовать сумму как 1000000000000000.00

Обратите внимание: я не хочу использовать глобальную функцию из-за проблем с производительностью.

Я пробовал, используя количество / 100.это дало мне экспоненциальную 1.0E15 .

dwl-

{
amount :100000000000000000 as :string /100
}

Ожидаемый результат - { amount : 1000000000000000.00 }

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я использовал приведенную ниже реализацию, и теперь это дает мне именно то, что я хочу. Мне просто нужно разделить число на 10 (или 100 или 1000 и т. Д. На основе значения точности) перед форматированием вывода.

%dw 1.0
    %output application/json
    ---
    {
        "amt" : "100123456789123456789" /"1000" as :string {format: "#"}
    }

вывод получен:

{"amt": 100123456789123456.789}

0 голосов
/ 11 февраля 2019

Пожалуйста, обратитесь к следующей документации по MuleSoft:

https://support.mulesoft.com/s/article/How-to-format-numbers-in-DataWeave

https://blogs.mulesoft.com/dev/training-talks/how-to-format-numbers-in-dataweave/

%dw 1.0
%output application/json
---
{
amount :100000000000000000 as :string {format: "#.00"}
}

выход:

{"amount": "100000000000000000.00"}

...