2011-01-13 15 views
1

スクリプトでは、xxxx形式で0.0580、X単位ではx(x)のいずれかの数値が返されます。JavaScriptを使用して通貨をフォーマットする

数字0.0580をフォーマットし、5.8セントを返すか、を返します。単位はです。

javascriptでこれを行う方法はありますか?特に、x.xxxxをどのようにフォーマットするのですか?

最初のxが0でない場合は、たとえば返品したいと思います。 1.75 $。

+1

問題を抱えている場合は、この質問を書いてみてください。 –

答えて

1

私はここであなたを台無しにしているかもしれませんが、何でも。ここで私はある時点でどこかで見つけ出し、その後リサイクルしていた機能があります。私は実際にそれが正確に何をするかを把握するために多くのことを調べることに困っていませんが、それはかなり有効でした。

function FormatMoneyAmount(starting_string, ending_string) { 
    //check validity of input (true = invalid, false = valid) 
    var valid_exp = new RegExp ('[^0-9,.$]', 'gi'); 
    input_invalid = (typeof(ending_string) == 'undefined' && valid_exp.test(starting_string)); 

    //check if more than 2 digits follow decimal or no decimal 
    decimal_invalid = typeof(ending_string) == 'undefined' && (starting_string.indexOf('.') > -1) && ((starting_string.length - starting_string.indexOf('.')) > 3); 

    if (input_invalid || decimal_invalid) { 
    ending_string = starting_string; 
    } else { 
    //remove commas, dollar signs 
    var replace_exp = new RegExp ('[,$]', 'gi'); 
    starting_string = starting_string.replace(replace_exp, ''); 

    //remove decimal if ending string not set, save for adding on later 
    var decimal_substring = ''; 
    if (typeof(ending_string) == 'undefined' && starting_string.indexOf('.') > -1) { 
     decimal_substring = starting_string.substring(starting_string.indexOf('.'), starting_string.length); 
     remaining_string = starting_string.substring(0,starting_string.indexOf('.')); 
    } else { 
     remaining_string = starting_string; 
    } 

    //if string is already 3 characters or less, do nothing 
    if (remaining_string.length > 3) { 
     //separate last 3 characters of string from rest of string 
     var final_three = remaining_string.substring(remaining_string.length - 3, remaining_string.length); 
     remaining_string = remaining_string.substring(0, remaining_string.length - 3); 

     //if not first group of 3, add new group before old group with comma, else set to new group 
     ending_string = (typeof(ending_string) == 'undefined') ? final_three + ((typeof(decimal_substring) == 'undefined') ? '' : decimal_substring) : final_three + ',' + ending_string; 

     //call function again if more than 3 digits remaining to process, else add to end string 
     if (remaining_string.length > 3) { 
     ending_string = FormatMoneyAmount(remaining_string, ending_string); 
     } else { 
     ending_string = remaining_string + ',' + ending_string; 
     } 
    } else { 
     ending_string = (typeof(ending_string) == 'undefined') ? remaining_string : remaining_string + ',' + ending_string + ((typeof(decimal_substring) == 'undefined') ? '' : decimal_substring); 
    } 
    } 
    return ending_string; 
} 
1

まず最初に行うには、あなたがするので、文字列の形式を確認しています

if (typeof num = "string" && num.slice(0,1) == "(" && num.slice(-1) == ")") { 
    // String is in the format (x), so we just need to return that number 
    return num.slice(1,-1) + " units left"; 
} 

次の部分は、それがセントではなく全体ドルであることを示し、数値が1未満であるかどうかをチェックすることである:結果に応じて、2つのコードパスを持っています。 1より小さい場合は100を掛けて計算します。

if (+num < 1) 
    // 0.0580 * 100 = 5.8 
    return (num * 100) + " cents"; 
else 
    return +num + "$"; 
関連する問題