1

私のフォームには、計算する必要がある 4 つのフィールドがあり、結果は PaymentAmount という最後のフィールドに表示されます。PaymentAmount のカスタム コンバーターを使用することをお勧めしました。これは、他の 4 つのフィールドの onchange イベントの PaymentAmount を部分的に更新するだけでよいためです。

これは非常にうまく機能しますが、私の問題は、結果の形式が間違っていることです。

私のコードは次のようになります。

getAsObject()

try {
    var transCode = getComponent("TransactionCode").getValue();
    var nominal = getComponent("Nominal").getValue();
    var price = getComponent("Price").getValue();
    var qFactor =  getComponent("QuoteFactor").getValue()||1;
    var fee1= getComponent("Fee1").getValue()||0;
    var fee2= getComponent("Fee2").getValue()||0;
    var fee3= getComponent("Fee3").getValue()||0;
    var feeTotal = fee1+fee2+fee3;

    var paymentAmount = nominal * (price * qFactor);
    if(transCode == "Buy") {
        paymentAmount+=feeTotal;
    } else if(transCode == "Sell") {
        paymentAmount -= feeTotal;
    } else return 0;

    return paymentAmount;
} catch(e){
    dBar.error(e);
}

getAsString()

return value.toString();

java で使用可能なすべてのメソッドとオブジェクトを使用して結果をフォーマットしようとしました。 String.format("%.2f", value); しかし失敗しました。

ロケール 10000*1,44+1,2 = 14401,2 に従って値を入力すると、PaymentAmount に表示される結果は 14401.2 になります。ロケール 14001,2 に従って表示したいと思います。

たとえば、getAsString() で次を使用すると、このエラーが発生します。

try {
    var val = java.lang.String.format("%.2f",value);

} catch(e) { dBar.error(e); }

com.ibm.jscript.InterpretException: Script interpreter error, line=2, col=28: Java method 'format(string, number)' on java class 'java.lang.String' not found

getAsString() の値の正しいデータ型を取得できません。

私の以前の質問を見たりコメントしたりしたあなたのために、私はこれらの「ローカリゼーションの問題」に再び行き詰まっています...

ご意見をお聞かせください

/M

4

1 に答える 1

2

この Java コードを使用して、ロケールの番号を取得できます。

import java.text.NumberFormat;
import java.util.Locale;
...
...
Locale swedishLocale = new Locale("sv", "SE"); // Locale for Sweden
NumberFormat nf = NumberFormat.getInstance(swedishLocale);
return nf.format(14401.2);

これは を返し14 401,2ます。これを SSJS に変換しようとしないでください。そうしないと、エラーが発生しますAmbiguity when calling format(long) and format(double)私はこれに噛まれたことがあります。

アップデート

ロケールで日付をフォーマットする静的メソッドを持つクラスを作成できます。

package pkg;
import java.text.NumberFormat;
import java.util.Locale;
public class Utilities {
    public static String formatString() {
        Locale swedishLocale = new Locale("sv", "SE");
        NumberFormat nf = NumberFormat.getInstance(swedishLocale);
        return nf.format(14401.2);
    }
}

次に、次の方法で SSJS でこのメソッドを呼び出すことができます。

var formattedNumber = pkg.Utilities.formatString();

要件に応じて、メソッドにパラメーターを追加できます。

于 2013-03-11T11:11:10.150 に答える