大写人发币

原创 2007年09月12日 11:27:00
以下代码是我在NB网上找的,做了下小调整。原本想彻底改一下,但太懒了...
能用就行
package test.marco;

import java.lang.Math;

public class Money ...{

    
private String HanDigiStr[] = new String[] ..."""""""""""",
            
"""""""" }
;

    
private String HanDiviStr[] = new String[] ..."""""""""""",
            
"""""亿""""""""""""""""亿""""",
            
"""""""""" }
;

    
// 元以上的单位
    String PositiveIntegerToHanStr(String NumStr) ...{
        
// 输入字符串必须正整数,只允许前导空格(必须右对齐),不宜有前导零
        String RMBStr = "";
        
boolean lastzero = false;
        
boolean hasvalue = false;
        
// 亿、万进位前有数值标记
        int len, n;
        len 
= NumStr.length();
        
if (len > 15...{
            
return "数值过大!";
        }

        
for (int i = len - 1; i >= 0; i--...{
            
if (NumStr.charAt(len - i - 1== ' '...{
                
continue;
            }

            n 
= NumStr.charAt(len - i - 1- '0';
            
if (n < 0 || n > 9...{
                
return "输入含非数字字符!";
            }

            
if (n != 0...{
                
if (lastzero) ...{
                    RMBStr 
+= HanDigiStr[0];

                }

                
// 若干零后若跟非零值,只显示一个零 //
                
// 除了亿万前的零不带到后面
                
// if( !( n==1 && (i%4)==1 && (lastzero || i==len-1) ) ) //
                
// 如十进位前有零也不发壹音用此行
                if (!(n == 1 && (i % 4== 1 && i == len - 1)) // 十进位处于第一位不发壹音
                ...{
                    RMBStr 
+= HanDigiStr[n];

                }

                RMBStr 
+= HanDiviStr[i]; // 非零值后加进位,个位为空
                hasvalue = true// 置万进位前有值标记
            }
 else ...{
                
if ((i % 8== 0 || ((i % 8== 4 && hasvalue)) // 亿万之间必须有非零值方显示万
                ...{
                    RMBStr 
+= HanDiviStr[i]; // “亿”或“万”
                }

            }

            
if (i % 8 == 0...{
                hasvalue 
= false;

            }

            
// 万进位前有值标记逢亿复位
            lastzero = (n == 0&& (i % 4 != 0);
        }

        
if (RMBStr.length() == 0...{
            
return HanDigiStr[0];

        }

        
// 输入空字符或"0",返回"零"
        return RMBStr;
    }


    String NumToRMBStr(
double val) ...{
        String SignStr 
= "";
        String TailStr 
= "";
        
long fraction, integer;
        
int jiao, fen;
        
if (val < 0...{
            val 
= -val;
            SignStr 
= "";
        }

        
if (val > 99999999999999.999 || val < -99999999999999.999...{
            
return "数值位数过大!";

        }

        
// 四舍五入到分
        long temp = Math.round(val * 100);
        integer 
= temp / 100;
        fraction 
= temp % 100;
        jiao 
= (int) fraction / 10;
        fen 
= (int) fraction % 10;
        
if (jiao == 0 && fen == 0...{
            TailStr 
= "";
        }
 else ...{
            TailStr 
= HanDigiStr[jiao];
            
if (jiao != 0...{
                TailStr 
+= "";
            }

            
if (integer == 0 && jiao == 0// 零元后不写零几分
            ...{
                TailStr 
= "";
            }

            
if (fen != 0...{
                TailStr 
+= HanDigiStr[fen] + "";
            }

        }

        
// 下一行可用于非正规金融场合,0.03只显示“叁分”而不是“零元叁分” //
        if (integer == 0...{
            
return "" + SignStr + TailStr;
        }

        
return "" + SignStr + PositiveIntegerToHanStr(String.valueOf(integer))
                
+ "" + TailStr;
    }

    
    
public static void main(String args[]) ...{
        Money mon 
= new Money();
        System.out.println(
-999.50 + mon.NumToRMBStr(-999.50));
        System.out.println(
999.50 + mon.NumToRMBStr(999.50));
        System.out.println(
-0.05 + mon.NumToRMBStr(-0.05));
        System.out.println(
0.05 + mon.NumToRMBStr(0.05));
    }

}

 

人民币小写转成大写,写个java程序和思路(写10100.00转成汉字壹万零壹百整)

public class Demo03 { public static void main(String[] args) { //金额大小写转换 float money = 1234.0...
  • anyway8090
  • anyway8090
  • 2017年03月19日 22:56
  • 319

关于人民币升值

关于人民币升值--不管懂不懂经济,看了都会豁然开朗关于人民币是否升值问题,网上争论很多,有的说不升,有的说不升就亏了中国人民。都有道理,但是都缺少理论的深度。也不了解经济本是兵无常势,水无常形,岂有一...
  • SuperLinux
  • SuperLinux
  • 2005年07月22日 15:06
  • 589

虚拟币开发专题(第一代山寨币系统收费机制是怎样的)

区块链爱好者(QQ:53016353) 生命中有两样东西是不会变的:死亡和银行的服务费。今天我将对比特股系统收取费用的原因、费用的类型和用处做一个清晰的解释。从更高的层面来看,其实一共有两种...
  • jQQ53016353
  • jQQ53016353
  • 2017年08月04日 10:53
  • 336

人名币转换,阿拉伯转大写

public class RenMingBi { private static final char[] data = new char[] { '零', '壹', '贰', '叁', '肆', ...
  • xb12369
  • xb12369
  • 2014年02月10日 11:42
  • 835

投资者认为Blockstream是区块链发…

哪一种区块链技术平台类型会占有最大的市场份额?这是行业观察者的分析焦点。 目前,大型银行做出了投票,他们为数字货币控股公司(Digital Asset Holdings)和 Ripple这样的私有或...
  • qq53016353
  • qq53016353
  • 2016年04月18日 22:08
  • 124

博客C币积分突然不增长了?

自从2017年8月12日期,C币积分就不增加了;但是这段时间访问量什么的还是嗖嗖在增加,规则似乎仍然显示“300次阅读量增加一个C币积分”。我是从这个链接查看的,http://my.csdn.net/...
  • stereohomology
  • stereohomology
  • 2017年08月21日 10:10
  • 303

区块链走向商用化仍存瓶颈 发链(FAB)给出解决之道

具有去中心化、安全等特性的区块链技术,目前的商业化瓶颈正卡在效率上。2018年伊始,真格基金创始人徐小平在一个微信群中发布的一条看好区块链的消息广为流传,也随即引爆了人们对于区块链的再度关注。2018...
  • M59Ht9D0J
  • M59Ht9D0J
  • 2018年01月23日 00:00
  • 41

区块链开发教程搭建Hyperledger的虚拟币开发环境

区块链爱好者(QQ:53016353) 目前Hyperledge fabric的开发环境是使用一个运行在Vagrant里的Ubuntu映像,并在里边依次运行若干Docker容器。 从概念上说,就...
  • jQQ53016353
  • jQQ53016353
  • 2017年09月27日 10:45
  • 405

使用宏定义,简单实现jni函数命名

在android中调用C语言接口时,要为native函数名称,命名规则是Java_包名(点用下划线替换)_类名_函数自定义名称,举个例子: 在java类JninameActivity(包名为com....
  • victoryckl
  • victoryckl
  • 2011年10月11日 23:27
  • 3393

人发高烧时应该怎么办?

      发高烧是体内抵抗感染的机制之一。我们的身体藉由升高体温来调动自身的防 御系统杀死外来病菌(一般来说,病菌在39℃以上时就会死亡),从而缩短疾病 时间、增强抗生素的效果。如果你在感冒初起时(...
  • cuizm
  • cuizm
  • 2009年12月13日 15:59
  • 971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:大写人发币
举报原因:
原因补充:

(最多只允许输入30个字)