2011-01-13 12 views
1

ein Skript gibt entweder eine Zahl wie 0.0580 so im Format x.xxxx oder a (x) für X-Einheiten übrig.Format Währung mit Javascript

Ich möchte 0,0580 um die Nummer zu formatieren und das Rück 5,8 Cent oder Rückkehr x Einheiten links.

Irgendwelche Ideen, wie man das in Javascript macht? Vor allem, wie formatiere ich das x.xxxx?

Falls das erste x nicht 0 ist, möchte ich z. 1,75 $.

+1

Vielleicht versuchen, dies selbst zu schreiben und dann eine bestimmte Frage stellen, wenn Sie ein Problem damit haben? –

Antwort

1

Ich verwöhne dich hier, aber was auch immer. Hier ist eine Funktion, die ich irgendwo irgendwann gefunden habe und seitdem recycelt habe. Ich habe nicht wirklich zu sehen viel in sich Mühe, um herauszufinden, was es tut genau, aber es war eher nützlich:

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

Das erste, was zu tun, um das Format der Zeichenfolge überprüfen, da Sie haben zwei Codepfade auf das Ergebnis je:

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"; 
} 

der nächste Teil der angibt, ob die Zahl zu überprüfen, ist kleiner als 1 ist, dass es Cent und nicht die ganze Dollar. Wenn es kleiner als 1 ist, erhalten Sie die Anzahl der Cent, die Sie wollen:

if (+num < 1) 
    // 0.0580 * 100 = 5.8 
    return (num * 100) + " cents"; 
else 
    return +num + "$"; 
Verwandte Themen