ここや他の場所で数え切れないほどのスレッドを 2 日以上調べましたが、これを正しく機能させることができません。
電卓は必要なとおりに機能していますが、最後の 1 つを完了することができないようです。1000 単位のコンマ区切りと 10 進数。
小数点以下の桁数はありますが、コンマを追加できません。カンマを追加すると、計算が中断したり、値が NaN として表示されたりする前に、1 つまたは 2 つのフィールドを機能させることができます。
ここに作業ページがあります: http://codepen.io/anon/pen/Fauzy
現在これを使用しています:
function FormatAsMoney(mnt) {
mnt -= 0;
mnt = (Math.round(mnt*100))/100;
return (mnt == Math.floor(mnt)) ? mnt + '.00'
: ( (mnt*10 == Math.floor(mnt*10)) ?
mnt + '0' : mnt);
}
これを使おうとすると:
function FormatAsMoney(x)
{
var money_value;
mnt = x.value;
mnt = mnt.replace(/\,/g,'');
mnt -= 0;
mnt = (Math.round(mnt*100))/100;
money_value = (mnt == Math.floor(mnt)) ? mnt + '.00' : ( (mnt*10 == Math.floor(mnt*10)) ? mnt + '0' : mnt);
if (isNaN(money_value))
{
money_value ="0.00";
}else{
money_value = CommaFormatted(money_value);
x.value = money_value.replace(".00", "");
}
}
まったく機能しません。
を使用して別のテストを行いました:
function FormatAsMoney(str) {
return (str + "").replace(/\b(\d+)((\.\d+)*)\b/g, function(a, b, c) {
return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(\d)(?=(\d{3})+$)/g, "$1,") : b) + c;
});
}
最初のフィールドでカンマの書式設定を取得しますが、小数を失い、他の計算を続行しません。
別の例として、次のようなコンマを追加する別の関数を作成しました。
function addCommas(nStr){
nStr += '';
c = nStr.split(','); // Split the result on commas
nStr = c.join(''); // Make it back to a string without the commas
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
私はそれを次のように使用します:
document.Rate.RATE.value=addCommas(FormatAsMoney(dasum));
これは私がこれまでに得た最良の結果のようですが、たとえば、 function dosum()
多くの if ステートメントに依存する行 (163) では、再び壊れています。値が千単位になるすべての適用可能なフィールドで機能させることはできないようです。
上位 2000 万ドルの「20000000」に「保険金額」を入力できるようにする必要があります (例として、コンマ区切りの値を持つほぼすべての可能なフィールドに小数点以下を入力するため)。
誰かが私の惨めさを終わらせることができますか? 助けてくれてありがとう。