- 浏览: 450721 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (377)
- Java (66)
- C++ (0)
- VC++ (0)
- .net (1)
- css (36)
- 数据库 (22)
- html (2)
- extjs (1)
- jpbm (0)
- javascript (31)
- 物资管理 (1)
- java基础 (5)
- C# (0)
- Android (56)
- window service (1)
- 其他 (2)
- Web服务器 (7)
- jbpm (1)
- eclipse (2)
- tomcat (3)
- java字符串与二进制的相互转化 (1)
- Oracle 数据库 (6)
- FreeMarker (8)
- 浏览器 (1)
- php (1)
- photoshop (6)
- spring (4)
- spring mvc (2)
- Acegi (1)
- webStorm 3.0 (4)
- Mongodb (8)
- mysql (9)
- 软件开发:需求分析 (1)
- 把Java程序作为Windows系统服务 (1)
- nodejs (4)
- json (1)
- 缓存 (1)
- J2ee (2)
- Flash报表 (1)
- MyEclipse+Maven+Tomcat (11)
- 生活 (1)
- Ubuntu (1)
- Bootstrap (1)
- jquery easy ui (2)
- 敏捷开发 (1)
- phone gap (1)
- rest (1)
- 移动开发 (22)
- Redis + Jedis + Spring (3)
- anroid (7)
- grunt 教程 (7)
- PhoneGap (2)
- sublime text (7)
- mariadb (1)
- linux (1)
- maven (2)
- jquery (1)
- ActiveMQ (1)
- LVS Nginx (1)
- nginx (6)
- ngnix (1)
- 爱因斯坦 (1)
- 天干地支 (1)
最新评论
-
muqingren:
...
Maven多模块布局实例详解 -
shutear:
解决了我的难题,谢谢分享!
Unable to load configuration. - action - file:/D:/studytool/apache-tomcat-6.0.16 -
702346318:
[img][/img][flash=200,200][/fla ...
CAS单点登录完整教程(上)【转】 -
liuguofeng:
PersonS631887934 写道学习中。。 有个问题想请 ...
js constructor属性 -
S631887934:
学习中。。 有个问题想请教楼主为什么要加上Person.pro ...
js constructor属性
public class MoneyUtil {
public static String[] chineseDigits = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
/**
* 把金额转换为汉字表示的数量,小数点后四舍五入保留两位
* @param amount
* @return
*/
public static String amountToChinese(double amount) {
if(amount > 99999999999999.99 || amount < -99999999999999.99)
throw new IllegalArgumentException("参数值超出允许范围 (-99999999999999.99 ~ 99999999999999.99)!");
boolean negative = false;
if(amount < 0) {
negative = true;
amount = amount * (-1);
}
long temp = Math.round(amount * 100);
int numFen = (int)(temp % 10); // 分
temp = temp / 10;
int numJiao = (int)(temp % 10); //角
temp = temp / 10;
//temp 目前是金额的整数部分
int[] parts = new int[20]; // 其中的元素是把原来金额整数部分分割为值在 0~9999 之间的数的各个部分
int numParts = 0; // 记录把原来金额整数部分分割为了几个部分(每部分都在 0~9999 之间)
for(int i=0; ; i++) {
if(temp ==0)
break;
int part = (int)(temp % 10000);
parts[i] = part;
numParts ++;
temp = temp / 10000;
}
boolean beforeWanIsZero = true; // 标志“万”下面一级是不是 0
String chineseStr = "";
for(int i=0; i<numParts; i++) {
String partChinese = partTranslate(parts[i]);
if(i % 2 == 0) {
if("".equals(partChinese))
beforeWanIsZero = true;
else
beforeWanIsZero = false;
}
if(i != 0) {
if(i % 2 == 0)
chineseStr = "亿" + chineseStr;
else {
if("".equals(partChinese) && !beforeWanIsZero) // 如果“万”对应的 part 为 0,而“万”下面一级不为 0,则不加“万”,而加“零”
chineseStr = "零" + chineseStr;
else {
if(parts[i-1] < 1000 && parts[i-1] > 0) // 如果"万"的部分不为 0, 而"万"前面的部分小于 1000 大于 0, 则万后面应该跟“零”
chineseStr = "零" + chineseStr;
chineseStr = "万" + chineseStr;
}
}
}
chineseStr = partChinese + chineseStr;
}
if("".equals(chineseStr)) // 整数部分为 0, 则表达为"零元"
chineseStr = chineseDigits[0];
else if(negative) // 整数部分不为 0, 并且原金额为负数
chineseStr = "负" + chineseStr;
chineseStr = chineseStr + "元";
if(numFen == 0 && numJiao == 0) {
chineseStr = chineseStr + "整";
}
else if(numFen == 0) { // 0 分,角数不为 0
chineseStr = chineseStr + chineseDigits[numJiao] + "角";
}
else { // “分”数不为 0
if(numJiao == 0)
chineseStr = chineseStr + "零" + chineseDigits[numFen] + "分";
else
chineseStr = chineseStr + chineseDigits[numJiao] + "角" + chineseDigits[numFen] + "分";
}
return chineseStr;
}
/**
* 把一个 0~9999 之间的整数转换为汉字的字符串,如果是 0 则返回 ""
* @param amountPart
* @return
*/
private static String partTranslate(int amountPart) {
if(amountPart < 0 || amountPart > 10000) {
throw new IllegalArgumentException("参数必须是大于等于 0,小于 10000 的整数!");
}
String[] units = new String[] {"", "拾", "佰", "仟"};
int temp = amountPart;
String amountStr = new Integer(amountPart).toString();
int amountStrLength = amountStr.length();
boolean lastIsZero = true; //在从低位往高位循环时,记录上一位数字是不是 0
String chineseStr = "";
for(int i=0; i<amountStrLength; i++) {
if(temp == 0) // 高位已无数据
break;
int digit = temp % 10;
if(digit == 0) { // 取到的数字为 0
if(!lastIsZero) //前一个数字不是 0,则在当前汉字串前加“零”字;
chineseStr = "零" + chineseStr;
lastIsZero = true;
}
else { // 取到的数字不是 0
chineseStr = chineseDigits[digit] + units[i] + chineseStr;
lastIsZero = false;
}
temp = temp / 10;
}
return chineseStr;
}
public static void main(String[] args) {
if(args.length == 0) {
System.out.println("转换演示:");
System.out.println("-------------------------");
System.out.println("25000000000005.999: " + amountToChinese(25000000000005.999));
System.out.println("45689263.626: " + amountToChinese(45689263.626));
System.out.println("0.69457: " + amountToChinese(0.69457));
System.out.println("253.0: " + amountToChinese(253.0));
System.out.println("0: " + amountToChinese(0));
System.out.println("-------------------------");
System.out.println("999: " + amountToChinese(999));
//System.out.println(Long.MAX_VALUE);
//System.out.println(Long.MIN_VALUE);
}
else {
System.out.println("转换结果:");
System.out.println(args[0] + ": " + amountToChinese(Double.parseDouble(args[0])));
}
}
}
class MoneyFormat{
private final String [] pattern ={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private final String [] cPattern ={"","拾","佰","仟","万","拾","佰","仟","亿"};
private final String [] cfPattern = {"","角","分"};
private final String ZEOR = "零";
public MoneyFormat(){
System.out.println("run...");
}
public String format(String moneyString){
int dotPoint = moneyString.indexOf("."); //判断是否为小数
String moneyStr;
if(dotPoint != -1){
moneyStr = moneyString.substring(0,moneyString.indexOf("."));
}
else{
moneyStr = moneyString;
}
StringBuffer fraction = null; //小数部分的处理,以及最后的yuan.
StringBuffer ms = new StringBuffer();
for(int i = 0;i < moneyStr.length();i++){
ms.append(pattern[moneyStr.charAt(i) - 48]); //按数组的编号加入对应大写汉字
}
int cpCursor = 1;
for(int j = moneyStr.length() - 1;j > 0;j--){
ms.insert(j,cPattern[cpCursor]); //在j之后加字符,不影响j对原字符串的相对位置
//只是moneyStr.length()不断增加
//insert(j,"string")就在j位置处插入,j=0时为第一位
cpCursor = cpCursor == 8?1:cpCursor + 1; //亿位之后重新循环
}
while(ms.indexOf("零拾") != -1){ //当十位为零时用一个"零"代替"零拾"
//replace的起始于终止位置
ms.replace(ms.indexOf("零拾"),ms.indexOf("零拾") + 2,ZEOR);
}
while(ms.indexOf("零佰") != -1){ //当百位为零时,同理
ms.replace(ms.indexOf("零佰"),ms.indexOf("零佰") + 2,ZEOR);
}
while(ms.indexOf("零仟") != -1){ //同理
ms.replace(ms.indexOf("零仟"),ms.indexOf("零仟") + 2,ZEOR);
}
while(ms.indexOf("零万") != -1){ //万需保留,中文习惯
ms.replace(ms.indexOf("零万"),ms.indexOf("零万") + 2,"万");
}
while(ms.indexOf("零亿") != -1){ //同上
ms.replace(ms.indexOf("零亿"),ms.indexOf("零亿") + 2,"亿");
}
while(ms.indexOf("零零") != -1){//有连续数位出现零,即有以下情况,此时根据习惯保留一个零即可
ms.replace(ms.indexOf("零零"),ms.indexOf("零零") + 2,ZEOR);
}
while(ms.indexOf("亿万") != -1){ //特殊情况,如:100000000,根据习惯保留高位
ms.replace(ms.indexOf("亿万"),ms.indexOf("亿万") + 2,"亿");
}
while(ms.lastIndexOf("零") == ms.length()-1){ //当结尾为零j,不必显示,经过处理也只可能出现一个零
ms.delete(ms.lastIndexOf("零"),ms.lastIndexOf("零") + 1);
}
int end;
if((dotPoint = moneyString.indexOf(".")) != -1 ){ //是小数的进入
String fs = moneyString.substring(dotPoint + 1,moneyString.length());
if(fs.indexOf("00") == -1 || fs.indexOf("00") >= 2){//若前两位小数全为零,则跳过操作
end = fs.length() > 2?2:fs.length(); //仅保留两位小数
fraction = new StringBuffer(fs.substring(0,end));
for(int j = 0;j < fraction.length();j++){
fraction.replace(j,j+1,this.pattern[fraction.charAt(j) - 48]); //替换大写汉字
}
for(int i = fraction.length();i > 0;i--){ //插入中文标识
fraction.insert(i,cfPattern[i]);
}
fraction.insert(0,"元"); //为整数部分添加标识
}
else{
fraction = new StringBuffer("元整");
}
}
else{
fraction = new StringBuffer("元整");
}
ms.append(fraction); //加入小数部分
return ms.toString();
}
public static void main(String [] ar){
//System.out.println(new MoneyFormat().format("10005022.123009"));
System.out.println(new MoneyFormat().format("999"));
}
}
public static String[] chineseDigits = new String[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
/**
* 把金额转换为汉字表示的数量,小数点后四舍五入保留两位
* @param amount
* @return
*/
public static String amountToChinese(double amount) {
if(amount > 99999999999999.99 || amount < -99999999999999.99)
throw new IllegalArgumentException("参数值超出允许范围 (-99999999999999.99 ~ 99999999999999.99)!");
boolean negative = false;
if(amount < 0) {
negative = true;
amount = amount * (-1);
}
long temp = Math.round(amount * 100);
int numFen = (int)(temp % 10); // 分
temp = temp / 10;
int numJiao = (int)(temp % 10); //角
temp = temp / 10;
//temp 目前是金额的整数部分
int[] parts = new int[20]; // 其中的元素是把原来金额整数部分分割为值在 0~9999 之间的数的各个部分
int numParts = 0; // 记录把原来金额整数部分分割为了几个部分(每部分都在 0~9999 之间)
for(int i=0; ; i++) {
if(temp ==0)
break;
int part = (int)(temp % 10000);
parts[i] = part;
numParts ++;
temp = temp / 10000;
}
boolean beforeWanIsZero = true; // 标志“万”下面一级是不是 0
String chineseStr = "";
for(int i=0; i<numParts; i++) {
String partChinese = partTranslate(parts[i]);
if(i % 2 == 0) {
if("".equals(partChinese))
beforeWanIsZero = true;
else
beforeWanIsZero = false;
}
if(i != 0) {
if(i % 2 == 0)
chineseStr = "亿" + chineseStr;
else {
if("".equals(partChinese) && !beforeWanIsZero) // 如果“万”对应的 part 为 0,而“万”下面一级不为 0,则不加“万”,而加“零”
chineseStr = "零" + chineseStr;
else {
if(parts[i-1] < 1000 && parts[i-1] > 0) // 如果"万"的部分不为 0, 而"万"前面的部分小于 1000 大于 0, 则万后面应该跟“零”
chineseStr = "零" + chineseStr;
chineseStr = "万" + chineseStr;
}
}
}
chineseStr = partChinese + chineseStr;
}
if("".equals(chineseStr)) // 整数部分为 0, 则表达为"零元"
chineseStr = chineseDigits[0];
else if(negative) // 整数部分不为 0, 并且原金额为负数
chineseStr = "负" + chineseStr;
chineseStr = chineseStr + "元";
if(numFen == 0 && numJiao == 0) {
chineseStr = chineseStr + "整";
}
else if(numFen == 0) { // 0 分,角数不为 0
chineseStr = chineseStr + chineseDigits[numJiao] + "角";
}
else { // “分”数不为 0
if(numJiao == 0)
chineseStr = chineseStr + "零" + chineseDigits[numFen] + "分";
else
chineseStr = chineseStr + chineseDigits[numJiao] + "角" + chineseDigits[numFen] + "分";
}
return chineseStr;
}
/**
* 把一个 0~9999 之间的整数转换为汉字的字符串,如果是 0 则返回 ""
* @param amountPart
* @return
*/
private static String partTranslate(int amountPart) {
if(amountPart < 0 || amountPart > 10000) {
throw new IllegalArgumentException("参数必须是大于等于 0,小于 10000 的整数!");
}
String[] units = new String[] {"", "拾", "佰", "仟"};
int temp = amountPart;
String amountStr = new Integer(amountPart).toString();
int amountStrLength = amountStr.length();
boolean lastIsZero = true; //在从低位往高位循环时,记录上一位数字是不是 0
String chineseStr = "";
for(int i=0; i<amountStrLength; i++) {
if(temp == 0) // 高位已无数据
break;
int digit = temp % 10;
if(digit == 0) { // 取到的数字为 0
if(!lastIsZero) //前一个数字不是 0,则在当前汉字串前加“零”字;
chineseStr = "零" + chineseStr;
lastIsZero = true;
}
else { // 取到的数字不是 0
chineseStr = chineseDigits[digit] + units[i] + chineseStr;
lastIsZero = false;
}
temp = temp / 10;
}
return chineseStr;
}
public static void main(String[] args) {
if(args.length == 0) {
System.out.println("转换演示:");
System.out.println("-------------------------");
System.out.println("25000000000005.999: " + amountToChinese(25000000000005.999));
System.out.println("45689263.626: " + amountToChinese(45689263.626));
System.out.println("0.69457: " + amountToChinese(0.69457));
System.out.println("253.0: " + amountToChinese(253.0));
System.out.println("0: " + amountToChinese(0));
System.out.println("-------------------------");
System.out.println("999: " + amountToChinese(999));
//System.out.println(Long.MAX_VALUE);
//System.out.println(Long.MIN_VALUE);
}
else {
System.out.println("转换结果:");
System.out.println(args[0] + ": " + amountToChinese(Double.parseDouble(args[0])));
}
}
}
class MoneyFormat{
private final String [] pattern ={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private final String [] cPattern ={"","拾","佰","仟","万","拾","佰","仟","亿"};
private final String [] cfPattern = {"","角","分"};
private final String ZEOR = "零";
public MoneyFormat(){
System.out.println("run...");
}
public String format(String moneyString){
int dotPoint = moneyString.indexOf("."); //判断是否为小数
String moneyStr;
if(dotPoint != -1){
moneyStr = moneyString.substring(0,moneyString.indexOf("."));
}
else{
moneyStr = moneyString;
}
StringBuffer fraction = null; //小数部分的处理,以及最后的yuan.
StringBuffer ms = new StringBuffer();
for(int i = 0;i < moneyStr.length();i++){
ms.append(pattern[moneyStr.charAt(i) - 48]); //按数组的编号加入对应大写汉字
}
int cpCursor = 1;
for(int j = moneyStr.length() - 1;j > 0;j--){
ms.insert(j,cPattern[cpCursor]); //在j之后加字符,不影响j对原字符串的相对位置
//只是moneyStr.length()不断增加
//insert(j,"string")就在j位置处插入,j=0时为第一位
cpCursor = cpCursor == 8?1:cpCursor + 1; //亿位之后重新循环
}
while(ms.indexOf("零拾") != -1){ //当十位为零时用一个"零"代替"零拾"
//replace的起始于终止位置
ms.replace(ms.indexOf("零拾"),ms.indexOf("零拾") + 2,ZEOR);
}
while(ms.indexOf("零佰") != -1){ //当百位为零时,同理
ms.replace(ms.indexOf("零佰"),ms.indexOf("零佰") + 2,ZEOR);
}
while(ms.indexOf("零仟") != -1){ //同理
ms.replace(ms.indexOf("零仟"),ms.indexOf("零仟") + 2,ZEOR);
}
while(ms.indexOf("零万") != -1){ //万需保留,中文习惯
ms.replace(ms.indexOf("零万"),ms.indexOf("零万") + 2,"万");
}
while(ms.indexOf("零亿") != -1){ //同上
ms.replace(ms.indexOf("零亿"),ms.indexOf("零亿") + 2,"亿");
}
while(ms.indexOf("零零") != -1){//有连续数位出现零,即有以下情况,此时根据习惯保留一个零即可
ms.replace(ms.indexOf("零零"),ms.indexOf("零零") + 2,ZEOR);
}
while(ms.indexOf("亿万") != -1){ //特殊情况,如:100000000,根据习惯保留高位
ms.replace(ms.indexOf("亿万"),ms.indexOf("亿万") + 2,"亿");
}
while(ms.lastIndexOf("零") == ms.length()-1){ //当结尾为零j,不必显示,经过处理也只可能出现一个零
ms.delete(ms.lastIndexOf("零"),ms.lastIndexOf("零") + 1);
}
int end;
if((dotPoint = moneyString.indexOf(".")) != -1 ){ //是小数的进入
String fs = moneyString.substring(dotPoint + 1,moneyString.length());
if(fs.indexOf("00") == -1 || fs.indexOf("00") >= 2){//若前两位小数全为零,则跳过操作
end = fs.length() > 2?2:fs.length(); //仅保留两位小数
fraction = new StringBuffer(fs.substring(0,end));
for(int j = 0;j < fraction.length();j++){
fraction.replace(j,j+1,this.pattern[fraction.charAt(j) - 48]); //替换大写汉字
}
for(int i = fraction.length();i > 0;i--){ //插入中文标识
fraction.insert(i,cfPattern[i]);
}
fraction.insert(0,"元"); //为整数部分添加标识
}
else{
fraction = new StringBuffer("元整");
}
}
else{
fraction = new StringBuffer("元整");
}
ms.append(fraction); //加入小数部分
return ms.toString();
}
public static void main(String [] ar){
//System.out.println(new MoneyFormat().format("10005022.123009"));
System.out.println(new MoneyFormat().format("999"));
}
}
发表评论
-
非对称加密算法-DH算法
2014-11-04 10:53 1458http://blog.csdn.net/kongqz/a ... -
非对称加密算法-RSA算法
2014-11-04 10:52 982一、概述 1、RSA是基于大数因子分解难题。目前各种主流 ... -
OAuth的机制原理讲解及开发流程
2014-11-04 10:01 791本想前段时间就把自己通过QQ OAuth1.0、OAuth2 ... -
FindBugs规则整理
2014-10-30 12:46 1939http://blog.csdn.net/jdsjlzx/a ... -
Java网络编程——远程通讯可选技术及原理
2014-10-28 17:40 648(此文系转载,具体出 ... -
UML类图几种关系的总结
2014-10-25 18:13 703在UML类图中,常见的有以下几种关系: 泛化(Gene ... -
关联、组合、聚合、依赖关系比较
2014-10-25 17:06 639类之间的关系种类: Generalization(泛化), ... -
组合,聚合,关联,依赖 的区别
2014-10-25 12:37 760依赖与关联 依赖(Depen ... -
设计指导原则
2014-10-18 15:38 816http://www.cnblogs.com/netfocu ... -
Java缩略图生成库之Thumbnailator应用说明
2014-10-12 18:17 747Thumbnailator 是一个为Java界面更流畅的缩略 ... -
spring mvc 使用jcrop进行头像剪切
2014-10-12 17:33 1450源码下载地址:http://download.csdn.n ... -
Lucene / Solr 开发经验
2014-10-08 22:06 901转自 Lucene/Solr开发经 ... -
高并发量网站解决方案
2014-10-08 22:03 713一个小型的网站,可以使用最简单的html静态页面就实现了,配 ... -
response.setHeader()的用法
2014-08-04 11:35 680response.setHeader()的用 ... -
iBatis整理——Spring环境下批处理实现
2014-07-09 11:09 425http://snowolf.iteye.com/blog/ ... -
Java NIO系列教程(八) SocketChannel
2014-09-14 11:06 539原文链接 作者:Jakob Jenkov ... -
Java NIO系列教程(七) FileChannel
2014-07-06 17:54 0原文链接 作者:Jakob Jenkov 译 ... -
Java NIO系列教程(六) Selector
2014-07-06 17:53 0原文链接 作者:Jakob Jenkov 译者:浪迹v 校对 ... -
Java NIO系列教程(五) 通道之间的数据传输
2014-07-06 17:53 0原文地址:http://tutorials.jenkov. ... -
Java NIO系列教程(四) Scatter/Gather
2014-07-06 17:52 431Java NIO开始支持scatter/gather,sca ...
相关推荐
可以使用`ToString()`方法配合特定的格式字符串,例如`"{0:0.00}"`,将金额转换为带有两位小数的字符串。 然后,我们从右向左逐位处理金额字符串,将每一位数字替换为对应的汉字数字。这涉及到一系列的条件判断和...
### JavaScript 数字金额转换为中文大写金额 在日常财务处理、银行交易或是发票开具等场景中,将数字金额转换成中文大写金额是一项常见的需求。这种转换不仅可以提高正式文档的专业性,还能避免因数字易被篡改而...
- 首先将输入的金额数值转换为其绝对值,并四舍五入保留两位小数。 - 然后将金额数值乘以100,并将其转换为字符串形式存储到`str4`中,便于后续逐位处理。 2. **字符串长度检查**: - 检查`str4`的长度是否超过...
1. **金额格式化**:首先,我们需要对输入的小写金额进行格式化,确保它符合标准的财务格式,即保留小数点后两位,并且在千位添加逗号分隔符。可以使用正则表达式和字符串的replace方法来完成这项工作。 2. **金额...
方法接受一个十进制数作为参数,首先对其进行四舍五入处理,确保精度到小数点后两位。随后,将数字乘以100并转换为字符串形式,以方便后续操作。通过循环遍历每个数字,根据其位置和值,构建出大写金额的字符串表示...
如果小数点后只有1位数字,也需要补零,如“0.5元”应表示为“伍角”。 5. **零的处理策略**:在大写金额中,零有时用于填充位置,避免省略可能导致误解的情况。例如,“100元”应写成“壹佰元整”,而不是“壹佰元...
4. **小数部分处理**:小数部分的处理需要注意保留的位数,通常财务中最多保留到分,所以小数点后两位是必要的。 5. **异常处理**:程序应能处理无效输入,比如非数字字符、超出范围的金额(超过万亿)等。 在描述...
2. **数值处理**:函数先将输入的`money`转换为其绝对值,并将其四舍五入到小数点后两位,然后乘以100转换为整数形式,再将其转换为固定格式的字符串。 3. **转换逻辑**:接下来是核心的转换逻辑。通过遍历`c_money...
取值为0表示不进行四舍五入,1表示保留两位小数并四舍五入,2表示保留两位小数但不进行四舍五入。 - `@intPrecision`:一个整型变量,默认值为2,用于设定数值的精度,即小数点后的位数,取值范围为0到4。 ### 功能...
在IT行业中,尤其是在前端开发领域,经常需要将数字金额转换为符合中文货币格式的表示,例如"¥"。这个问题涉及到JavaScript(简称JS)的基础知识,包括字符串操作、数字格式化以及用户界面(UI)的呈现。本文将深入...
方法`Round`接受两个参数:`d`代表要四舍五入的数,`i`表示要保留的小数点后的位数。代码通过`if`语句判断数字的正负,并根据需要向数字添加一个小的偏移量(+5或-5乘以10的负次方),以确保在四舍五入时正确处理...
3. **处理小数部分**:小数部分按照每两位一组(角、分)转换为中文大写。 4. **添加单位**:根据整数和小数部分的长度,添加相应的货币单位,如元、角、分、万、亿等。 5. **处理特殊情况**:对于零、负数和非数字...
如果超过两位,通常只保留两位并四舍五入。 5. 负数表示: 如果输入的数字是负数,需要在结果前添加“负”字。 6. 结果组合: 将整数部分和小数部分转换后的字符串合并,加上“元”和“整”(或“正”),形成...
代码首先根据数值的正负性添加一个小数点后第`i+1`位的5,然后进行四舍五入操作。接着,通过字符串处理将四舍五入后的数字转换为带有指定小数位数的格式。这种方法确保了无论数值正负,都能正确进行四舍五入。 此外...
为了处理金额的精度(通常保留两位小数),我们首先将`numberValue`乘以100并四舍五入,确保得到的是一个整数。这样可以避免因小数点后位数过多导致的错误。 接下来,我们使用`substr`方法来获取`numberValue`每一...
- 首先,将输入的小写金额数值乘以100,目的是将小数点后的金额也转换为整数处理,然后再四舍五入到两位小数。 - 检查转换后的数字长度是否超过10位,如果超过则返回错误提示。 - 利用while循环逐位处理数字和...
本文将详细讲解如何在ASP中将数字转换为中文数字(大写金额)的两种函数实现方法。 首先,我们来看第一种方法。这个函数名为`Money`,它接受一个数字作为参数`thenumber`。函数内部定义了多个变量,包括`Money`、`i...
将金额四舍五入到两位小数,并确保整数部分至少有一位小数(即如果原金额为整数,则添加 `.00`),这样可以统一数据格式,便于后续处理。 #### 4. 数字到汉字大写的转换 通过循环遍历每个字符,将数字字符转换为其...
- `replace(/(\.\d{2}).+$/,"$1")`:如果存在超过两位的小数部分,则仅保留前两位小数。 - `replace(/^0+([1-9])/,"$1")`:去除小数前多余的零。 - `replace(/^0+$/,"0")`:确保纯零的情况只显示一个“0”。 ###...
1. 将金额四舍五入到小数点后两位。 2. 将小数点后的金额转换成整数,方便后续的处理。 3. 正确处理数字字符串和单位字符串的长度,确保它们能够一一对应。 4. 按照中文的读法,正确地转换每一位数字及其位置的单位...