0

私が取り組んでいるサイト(私が継承した... javascriptはよくわかりません)には、データベース内の任意の数字の末尾に「.00」を表示するように現在設定されているコードがあります(実際にはPHPインクルードページ) )オンラインフォームに通貨として表示されるようにします。

私のクライアントは、セント($ 5.50)を含む金額をリストに追加したいと考えています。これらの非全通貨の金額を含めることができるように、スクリプトを変更または修正するための支援が必要です。

これは、(私が思う/推測する)通貨のフォーマットに対処するスクリプトのスニペットです。

function CurrencyFormatted(amount)
{
    var i = parseFloat(amount);
    if(isNaN(i)) { i = 0.00; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if(s.indexOf('.') < 0) { s += '.00'; }
    if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return s;
}

このコードに追加または変更して、この1つ(および将来の同様の)金額に必要な特定のセントを表示できるようにする方法はありますか?

4

2 に答える 2

3

そのコードは、いくつかの興味深い丸め処理を行っていますが、実際には対処できませんが、小数点以下の桁数が固定されている数値をフォーマットするには、toFixed数値に対して次の関数を使用します。

var n = 1.2345;
n.toFixed(2); // "1.23"

丸めを行うことに注意してください。

(1.234).toFixed(2); // "1.23"
(1.235).toFixed(2); // "1.24"

(変数を呼び出すときはかっこは必要ありませんが、toFixed上記の 2 つの例で行ったように、リテラルで呼び出すときはかっこが必要です。当然、あなたの場合、変数を使用します。したがって、それらは必要ありません。)


以下のコメント/質問を再送信してください。

素早い返信ありがとうございます。私はjavascriptをまったく知らないと言うべきだったと思うので、私の質問は次のとおりです。1)上記で提供したコードを既存のコードのどこに挿入しますか...

1)質問で引用したコードは、入力された数値に対して一連の操作を実行しています。これには、2桁に丸める前に0.5セントを追加することが含まれます(非常に最適ではない方法で)。現在の目標が、入力された数値の 2 桁に丸められたバージョンを忠実に再現することである場合 (これは 0.5 セントを追加するものではありません)、関数全体を次のように置き換えることができます。

function CurrencyFormatted(amount)
{
    return parseFloat(amount).toFixed(2);
}

0.5 セントを追加し続けたい場合は、次のようにします。

function CurrencyFormatted(amount)
{
    return (parseFloat(amount) + 0.005).toFixed(2);
}

...そして 2) これにより、既存の他のすべての数値がそのまま表示され続けますか (たとえば、インクルード ファイルの "25" は "25.00" と表示されます)?

上記に入力する数値 (または数値文字列) は、小数点以下 2 桁でフォーマットされます00。したがって、上記では、CurrencyFormatted("25")が返され"25.00"ます。

...または、私が投稿したサンプルコードの一部またはすべてを置き換えるために提案されたこのコードを使用しますか?したがって、これに対応するためにすべてのデータベース番号を変更する必要がありますか? (つまり、すべての整数の末尾にゼロを 2 つ追加する必要がありますか? (25 は 2500 になるなど)。

.00データベース内の整数に加算する必要はありません。

于 2012-04-26T10:12:23.210 に答える
0

PHP チェックアウトmoney_format()でこれを行いたい場合は、次の例を参照してください。

<?php 
$value = 5;

setlocale(LC_MONETARY, 'en_US');
echo '$'.money_format('%i', $value) . "\n";//$5.00


$value = 5.545;

setlocale(LC_MONETARY, 'en_US');
echo '$'.money_format('%i', $value) . "\n";//$5.54

$value = 9.99;

setlocale(LC_MONETARY, 'en_US');
echo '$'.money_format('%i', $value) . "\n";//$9.99

?>
于 2012-04-26T10:21:30.827 に答える