2012-03-10 89 views
2

在我的數據庫中,我存儲沒有任何點或逗號的金錢價值。 所以我需要一個Javascript函數將其轉換成貨幣字符串。Javascript:將整數轉換爲字符串(貨幣表示)的函數?

實施例:將500(五美元)爲5.00,100到1.00,550爲5.50等

任何人可以發佈一個這樣的功能?

+0

你的意思,你只是想除以100呢?或者你還需要本地化嗎? – JohnP 2012-03-10 08:03:15

+1

請發佈您目前使用的代碼 – 2012-03-10 08:05:43

+0

到目前爲止我還沒有代碼。 這就是我想要的: var price = convertFunction(510); //價格是「5.10」 如果我簡單地除以100,510將返回5.1 – user1091856 2012-03-10 08:09:21

回答

2

您可以使用類似:

function toAmount(amount){ 
    amount = Number(amount); 
    if (isNaN(amount)){ 
    throw 'invalid: can\'t convert input'; 
    } 
    return (amount/100).toFixed(2); 
} 
//usage 
toAmount(500); //=> 5.00 
toAmount(520873); //=> 5208.73 
toAmount('500'); //=> 5.00 

或使用功能的一個擴展Number

Number.prototype.toAmount = function toAmount(amount){ 
    return (this/100).toFixed(2); 
}; 
//usage: 
(500).toAmount(); //= 5.00 
(520873).toAmount(); //=> 5208.73 
+0

10x。正是我需要的。 – user1091856 2012-03-10 08:12:02

+0

爲什麼不使用'toFixed()'而不是'toPrecision()'作爲'toFixed()'處理小數點後的確切點數,這正是您真正想要的(也顯示在我的答案中)?這種方式可能有效,但似乎並不直接。 – jfriend00 2012-03-10 08:13:43

+0

@jfriend:或許星期六早上失明。你說得對,我會編輯答案。 – KooiInc 2012-03-10 08:18:31

0

如果只是簡單的劃分上100的值;在這之後,你可以添加」 .00" 值,如果不必要

​var valdb = 500; 
var format = (valdb/100)+".00"; 
alert(format); 

+0

這隻適用於數字是100的精確倍數。 – jfriend00 2012-03-10 08:14:40

0

您可以使用各種字符串操作(我選擇使用切片())中提取的最後兩個字符,在插入句介於和構造最終的字符串之間。這樣做的好處是你避免一些浮點運算的不準確,有時有:

var num = 500; 
var numStr = num.toString(); 
var formattedStr = numStr.slice(0,-2) + "." + numStr.slice(-2); 

如果你只是想用浮點運算,你可以這樣做:

var num = 500; 
var formattedStr = (num/100).toFixed(2).toString(); 

最後一部分的操作部分是toFixed()方法,它將十進制數字舍入爲零,並將其填充到精確的位數(這正是您想要的金錢)。您可以在this MDN reference中閱讀aboutFixed()。

你可以看到他們兩個在這裏工作:http://jsfiddle.net/jfriend00/pApVR/

0

簡單地除以100的號碼,然後,以確保它總是有小數使用toFixed Javascript函數(2)。

所以它看起來像:

function ConvertCentsToDollars(cents) { 
    var dollars = cents/100; 
    var dollars = dollars.toFixed(2); 
    return dollars; 
}