只是想知道是否有任何库可以轻松地将数字转换为javascript,jquery,php,python等中的字符串表示...
例如:我需要将1,210变成“一千零二十”。
此程序是否有名称?
答案 0 :(得分:2)
Javascript解决方案。支持从负无穷大到无穷大的所有整数:
var GetWord;
(function(){
GetWord = function (number) {//number must be an integer
return (function f(number){
var output = [];
var is_negative = number < 0;
number = Math.abs(number);
var chunks = [];
for (var x = count_names.length - 1, limit = 0; x >= limit; --x) {
var chunk = Math.floor(number / counts[x]);
if (chunk !== 0) {
output.push(GetWord(chunk) + " " + count_names[x]);
}
chunks[x] = chunk;
number -= chunk * counts[x];
}
if (number !== 0) {
if (number <= 19) {
output.push(number_names[number]);
} else {
var tens = Math.floor(number / 10);
number -= tens * 10;
if (number === 0) {
output.push(number_names2[tens - 2]);
} else {
output.push(number_names2[tens - 2] + " " + GetWord(number));
}
}
}
if (output.length > 2) {
for (var x = 0, limit = output.length - 1; x < limit; ++x) {
output[x] += ","
}
}
if (output.length > 1) {
var ubound = output.length - 1;
output[output.length] = output[ubound];
output[ubound] = "and";
}
if (is_negative) {
output.splice(0, 0, "negative");
}
return output;
})(number).join(" ");
};
var number_names = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"];
var number_names2 = ["twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", "hundred"]
var count_names = ["hundred", "thousand", "million", "billion", "trillion", "quadrillion", "quintillion", "sextillion", "septillion", "octillion", "nonillion", "decillion", "undecillion", "duodecillion", "tredecillion", "quattuordecillion", "quindecillion", "sexdecillion", "septendecillion", "octodecillion", "novemdecillion", "vigintillion"];
var counts = [100];
for (var x = counts.length, limit = count_names.length; x < limit; ++x) {
counts.push(Math.pow(1000, x));
}
})();
<强>用法:强>
GetWord(1210);
提供one thousand, two hundred, and ten
GetWord(2147483647);
提供two billion, one hundred and forty seven million, four hundred and eighty three thousand, six hundred, and forty seven
GetWord(-123876124);
提供negative one hundred and twenty three million, eight hundred and seventy six thousand, one hundred, and twenty four
如果您需要它们,只需将这些数组模板更改为“上限”形式。
答案 1 :(得分:0)
听起来像pynum2word可以提供帮助:http://sourceforge.net/projects/pynum2word/
具体来说,是to_cardinal方法。
其他语言,我会寻找“数字到单词”