package com.ext;
import java.util.HashMap;
import java.util.Map;
public class Convert {
public final String[] units = new String[] { "", "thousand", "million",
"billion" ,"trillion"};
public final static Map<Integer, String> map = new HashMap<Integer, String>();
static {
// map.put(0,"zero");
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.put(4, "four");
map.put(5, "five");
map.put(6, "six");
map.put(7, "seven");
map.put(8, "eight");
map.put(9, "nine");
map.put(10, "ten");
map.put(11, "eleven");
map.put(12, "twelve");
map.put(13, "thirteen");
map.put(14, "fourteen");
map.put(15, "fifteen");
map.put(16, "sixteen");
map.put(17, "seventeen");
map.put(18, "eighteen");
map.put(19, "nineteen");
map.put(20, "twenty");
map.put(30, "thirty");
map.put(40, "forty");
map.put(50, "fifty");
map.put(60, "sixty");
map.put(70, "seventy");
map.put(80, "eighty");
map.put(90, "ninety");
}
public String convert(String number) {
if(null== number || "".equals(number)|| "0".equals(number)) {
return "";
}
number = number.replace(",", "");
int pointPos = number.indexOf(".");
String num1 = null;
String num2 = null;
if (-1 == pointPos) {
num1 = number;
} else {
num1 = number.substring(0, pointPos);
num2 = number.substring(pointPos + 1);
}
int c = (num1.length() + 2) / 3;
int offset = c * 3 - num1.length();
int offset_wk = offset;
while (offset_wk != 0) {
num1 = "*" + num1;
offset_wk--;
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < c; i++) {
String s;
if (i == c - 1 && offset != 0) {
s = num1.substring(offset, 3);
} else {
s = num1.substring((c - i - 1) * 3, (c - i) * 3);
}
sb.insert(0, units[i] + " ").insert(0,
covertLessThanThousand(s) + " ");
}
if(!"".equals(sb.toString().trim())){
sb.append("dollar ");
}
if (null != num2 && Integer.parseInt(num2) != 0) {
sb.append(covertLessThanThousand(num2)).append(" cent");
}
return sb.toString();
}
public String covertLessThanThousand(String number) {
StringBuffer sb = new StringBuffer();
int iNum = Integer.parseInt(number);
if (iNum / 100 != 0) {
sb.append(map.get(iNum / 100)).append(" ").append("hundred").append(" ");
iNum = iNum % 100;
}
if (iNum / 10 != 0 && iNum > 19) {
sb.append(map.get(iNum - iNum % 10)).append(" ");
iNum = iNum % 10;
}
sb.append(map.get(iNum) == null ? "" : map.get(iNum)).append(" ");
return sb.toString().trim();
}
public static void main(String[] args) {
// String str = new Convert().convert("55,555,123,456,789.01");
// String str = new Convert().convert("1.01");
String str = new Convert().convert("99,999,999,999,999.99");
System.out.println(str.replaceAll("^[ ]*", ""));
}
}
分享到:
相关推荐
在Asp.net C#开发中,经常需要处理与货币相关的数据,这包括将数字金额转换成规范的中英文表示方式,以满足财务报告、发票或合同等场景的需求。本资源提供的程序实现了一种高效的方法来完成这个任务。下面将详细阐述...
最好放在公共方法里,以便调用,定义String 类型接受返回的金额,调用参数为需要传入的金额
**Tesseract 金额数字识别库**是一个专门针对中文金额数字识别的轻量级工具,它的设计目的是为了在处理大量文本数据时,特别是涉及到金融、会计等领域时,提供高效的数字识别能力。相较于完整的英文和中文识别包,这...
"finereport格式化金额函数js中进行数字超大金额千位符格式化处理" 本文主要讲解了finereport格式化金额函数在JS中进行数字超大金额千位符格式化处理的方法。该需求在前端开发中非常普遍,例如音乐app中的歌曲播放...
在 PowerBuilder 编程环境中,将阿拉伯数字金额转换为英文表达是常见的需求,尤其是在处理财务报表或发票等应用时。这个“Pb 数字变成英文字母金额”的问题可以通过自定义函数来解决,例如 `f_numberToEnglishAmt()`...
数字金额(元、分)转为英文, 使用示例: String ret=new NumToWords().convert(123450.6789); 返回值:(四舍五入123450.68) one hundred and twenty three thousand four hundred and fifty dollars and 68 cents
在IT领域,尤其是在财务软件开发或者数据处理中,有时我们需要将数字金额转换成英文大写的表示方式,这在正式的财务报表或者合同中是常见的需求。这个标题提到的"一个将数字金额转成英文大写金额的函数字母也是大写...
//a为小写数字字符,b为对应的大写字符 //c为对应大写单位,d为当前大写字符串的最后一个汉字 a=str_int.SubString(i,1); a_int=StrToInt(a); b=dx_sz.SubString((a_int*2+1),2);// b=copy(dx_sz,(a_int2+1),2...
sqlserver数字转金额大写,输入数字返回汉字大写
本文将深入探讨如何在VB6中实现数字金额转换为英文的源程序,以及相关知识点。 首先,我们需要理解数字金额转英文的需求。在商业和金融领域,为了方便理解和核对,有时会将数字金额以英文形式表达,如"one thousand...
有些变态的报表需要把数字转换成英文输出,但愿这个能帮得到你 one hundred eighty-eight thousand, eight hundred one hundred eighty-eight thousand, eight hundred one one hundred eighty-eight thousand, ...
VB 将数字转换为英文描述的函数.类似于将数字转换为货币描述
### SAP ABAP 数字金额转中文大写源代码解析及应用 #### 一、背景介绍 在财务系统中,将数字金额转换成中文大写格式是常见需求之一,尤其是在发票开具、合同签订等正式文件中。SAP作为全球领先的企业管理软件之一,...
谢谢啦这是将数字金额转为中文金额的自定义函数,可以将数字转化为中文字表示的金额(我想这个软件如果外国人也能感兴趣就好,那说明中文已经要取代英文啦,呵呵:) )这个功能在窗体和报表中非常实用,省去你不少...
这个压缩包中包含的"人民币金额小写转大写.cmd.txt"文件,就是这样一个批处理脚本,用于将输入的人民币金额小写数字自动转换成大写汉字。由于安全考虑,原文件被暂时改为了TXT格式,使用时需要将其文件扩展名改为"....
将数字翻译成英语的JavaScript,可以自动判断出你输入的数字是多大,它会自动拼合,按亿、千万、百万的语法翻译出来,挺实用。
标签中的"Delphi英文金额"和"Delphi英语金额"强调了这个转换是针对Delphi环境的,而"英文金额转换"和"英语金额转换"则表明这个转换适用于一般英文财务表述的场景。 通过解压并查看"英文大写金额"这个文件,我们可以...
把表示数字的金额数(元、分)转为英文读法 把965.59转换为英文字母表示 输出: NINE HUNDRED AND SIXTY-FIVE POINT FIVE NINE
在实际应用中,OCR可以用于各种场景,如自动填写表单、识别发票上的金额、翻译图片中的文本等。为了实现高效和准确的OCR系统,需要不断优化算法,调整参数,甚至训练自定义模型以适应特定的文字样式和背景。 此外,...