美元的阿拉伯数字转换为英文大写的格式,参考了网上的代码,然后重构整理了一下。
package com.proviaa.ipds.test;
import com.proviaa.ipds.util.CommonUtils;
/**
* 把表示美元的阿拉伯数字转换为英文大写的格式。
*
* @author Ken
*
*/
public class DollarsNumberFormat {
private static final String[] MAJORS = { " ", " Thousand ", " Million ",
" Billion ", " Trillion ", " Quadrillion ", " Quintillion " };
private static final String[] TENS = { " ", " Ten ", " Twenty ", " Thirty ",
" Forty ", " Fifty ", " Sixty ", " Seventy ", " Eighty ",
" Ninety " };
private static final String[] NUMBERS = { " ", " One ", " Two ", " Three ",
" Four ", " Five ", " Six ", " Seven ", " Eight ", " Nine ",
" Ten ", " Eleven ", " Twelve ", " Thirteen ", " Fourteen ",
" Fifteen ", " Sixteen ", " Seventeen ", " Eighteen ", " Nineteen " };
/**
* 把阿拉伯数字转换为英文大写格式。<br>
* 例如:123.01:One Hundred Twenty Three Dollars And One Cent
*
* @param value
* @return
*/
public String format(double value) {
double number = CommonUtils.round(value, 2);// 小数点保留两位
String result = getDollarPart(number) + getCentPart(number);
return result.replace(" ", " ").toUpperCase();// 去掉多余的空格,并转为大写
}
// 获取整数部分的转换
private String getDollarPart(double value) {
int number = (int) value;
String dollars = formatDigit(number);
if (dollars.trim().equals(""))
return "No Dollars";
else if (dollars.trim().equals("One"))
return "One Dollar";
else
return dollars + " Dollars";
}
// 获取小数部分的转换
private String getCentPart(double number) {
int cents = (int) (Math.round(number * 100) - ((int) number) * 100);
String centsPart = formatDigit(cents);
if (centsPart.trim().equals(""))
return " And No Cents";
else if (centsPart.trim().equals("One"))
return " And One Cent";
else
return " And " + centsPart + " Cents";
}
private String formatDigit(int value) {
int number = value;
String prefix = ""; // 正负号前缀。
if (number < 0) {
number = -number;
prefix = "Negative ";
}
String result = "";
int index = 0;
do {
int n = number % 1000;
if (n != 0) {
result = formatLessThanOneThousand(n) + MAJORS[index] + result;
}
index++;
number /= 1000;
} while (number > 0);
return (prefix + result).trim();
}
private String formatLessThanOneThousand(int value) {
int number = value;
String result = "";
if (number % 100 < 20) {// 前两位数的值在20以内。
result = NUMBERS[number % 100];
number /= 100;
} else {// 前两位数的值在20以外。
result = NUMBERS[number % 10];// 个位
number /= 10;
result = TENS[number % 10] + result;// 十位&个位
number /= 10;
}
if (number == 0)
return result;
else
return NUMBERS[number] + " Hundred " + result; // 百位&十位&个位。
}
public static void main(String[] args) {
DollarsNumberFormat f = new DollarsNumberFormat();
System.out.println("123456789 = " + f.format(123456789));
System.out.println("123.01 = " + f.format(123.01));
System.out.println("0.01 = " + f.format(0.01));
System.out.println("0.0 = " + f.format(0.0));
System.out.println("-123.71 = " + f.format(-123.71));
}
}
测试结果:
123456789 = ONE HUNDRED TWENTY THREE MILLION FOUR HUNDRED FIFTY SIX THOUSAND SEVEN HUNDRED EIGHTY NINE DOLLARS AND NO CENTS
123.01 = ONE HUNDRED TWENTY THREE DOLLARS AND ONE CENT
0.01 = NO DOLLARS AND ONE CENT
0.0 = NO DOLLARS AND NO CENTS
-123.71 = NEGATIVE ONE HUNDRED TWENTY THREE DOLLARS AND NEGATIVE SEVENTY ONE CENTS
分享到:
相关推荐
阿拉伯数字转换成英文美元,eg. 123USD 转换成:Say in USD One Hundred Thirty Two Only.
在财务工作中,金额通常以阿拉伯数字(1, 2, 3...)表示,但在正式文件中,为了清晰性和安全性,会将其转换为中文的大写形式(壹、贰、叁...)。这个转换器能够帮助用户快速、准确地完成这一过程。 描述中的“方便...
Excel的大写金额转换公式可以帮助我们快速、准确地将阿拉伯数字格式的金额转换为汉字大写的表示形式。以下是一些关键的知识点,涵盖了如何实现这一功能。 1. **基数转换**:首先,我们要理解的是,大写金额转换涉及...
在IT行业中,尤其是在Web开发领域,经常会遇到将数字转换为中文大写的场景,这在处理财务数据或打印发票时尤其重要。"人民币大写转换js"是一个常见的需求,它涉及到JavaScript编程语言中的字符串处理和数字格式化...
具体来说,它可以将阿拉伯数字(例如123)转换为中文大写数字(例如壹佰贰拾叁)。该函数支持多种模式,其中最常用的是模式2,即转换为包含“元”、“角”、“分”的格式。 ### 2. 处理整数部分与小数部分 对于...
- 将阿拉伯数字1-9转换为中文数字:一、二、三、四、五、六、七、八、九。 - 将阿拉伯数字10-90转换为中文数字:十、二十、三十、四十、五十、六十、七十、八十、九十。 - 对于0,通常用零表示,如2023年10月1日...
此外,考虑到中国特有的大写金额表示法(如壹、贰、叁等),源代码可能还包含了将阿拉伯数字转换为中文大写的逻辑。这涉及到一个映射表,将数字对应到对应的中文字符,然后拼接成字符串。这部分代码可能具有一定的...
人民币大写的表示方式与阿拉伯数字对应如下: 1. "壹" 对应 1 2. "贰" 对应 2 3. "叁" 对应 3 4. "肆" 对应 4 5. "伍" 对应 5 6. "陆" 对应 6 7. "柒" 对应 7 8. "捌" 对应 8 9. "玖" 对应 9 0. "零" 对应 0 除了个...
例如,创建一个过滤器用来将数字转换为中文数字表示: ```javascript Vue.filter('chineseNum', function(value) { // 实现将阿拉伯数字转为中文数字的逻辑 }); ``` 然后在模板中使用: ```html {{ number | ...
- Excel提供了一个复杂的公式,通过SUBSTITUTE和TEXT函数组合,可以将阿拉伯数字转换为大写金额。例如,公式`=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(IF(A1>-0.5%,,"负")&TEXT(INT(FIXED(ABS(A1))),"[dbnum2]")&TEXT...
ASCII码表中的可打印字符是指从32(0x20)到126(0x7E)之间的字符,这部分字符包含了英文的大写和小写字母、阿拉伯数字及一些常用的标点符号等。 1. **空格 (space)**:ASCII码为32(0x20),代表空格。 2. **感叹...
- **数字0-9(48-57)**:值分别为48至57,用于表示阿拉伯数字。 - **冒号(:,58)**:值为58,标点符号。 - **分号(;,59)**:值为59,标点符号。 - **小于号(<,60)**:值为60,数学符号。 - **等于号(=,61...
它最初被设计为7位的编码,用于标准的128种符号,包括了大小写的英文字母、阿拉伯数字、标点符号以及控制字符。 #### 控制字符与通讯专用字符 ASCII码的前34个字符(0~32号及第127号)主要作为控制字符或通讯专用...
1. `Chr("0")`到`Chr("9")`:这些是数字字符,它们分别代表0到9的阿拉伯数字。 2. `Chr("10")`:这是一个换行符,用于在文本中开始新的行。 3. `Chr("11")`:这是垂直制表符,通常用于文本布局,使文本在列对齐。 4....
这些字符包括阿拉伯数字(0-9),大写和小写字母(A-Z,a-z),以及常见的标点符号、空白键和一些特殊符号,如下划线、括号等。这些都是可以在显示器上直接看到的字符。 下面是部分ASCII可打印字符的示例: - ...
- **英文字母**:包括大写字母A到Z以及小写字母a到z。 - **数字字符**:0到9的阿拉伯数字。 - **算术运算符**:加号`+`、减号`-`、乘号`*`和除号`/`。 - **关系运算符**:小于号`、等于号`=`、大于号`>`。 - **分隔...