34510.1大写是“叁万肆仟伍佰壹拾万零伍仟...

填写支票:怎样大写_百度知道
填写支票:怎样大写
写成贰拾万零肆仟伍佰元零壹角贰分还是贰拾万肆仟伍佰元壹角贰分呢
提问者采纳
应该是这样子的吧..贰拾万零肆仟伍佰元壹角贰分
其他类似问题
为您推荐:
您可能关注的推广
支票的相关知识
其他1条回答
下载知道APP
随时随地咨询
出门在外也不愁C++人民币大写转换的一道题_百度知道
C++人民币大写转换的一道题
小弟晚搞了一晚都没想明白这题哪儿出错了。哪位大牛帮我看下程序,这是soj里的一道题题目:1641: 人民币金额打印银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。
在中文大写方式中,0到10以及100、被依次表示为:
零壹贰叁肆伍陆柒捌玖拾佰仟万
以下的例子示范了阿拉伯数字到人民币大写的转换规则: 1 壹圆 11 壹拾壹圆 111 壹佰壹拾壹圆 101 壹佰零壹圆 -1000 负壹仟圆 1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆 输入
第一行为测试数据的组数n,后面有n个测试数据。每组测试数据一行,为一个绝对值不超过(10^8 - 1)的整数。输出
对于每组测试数据,输出一行,即相应的人民币大写表示。输入示例 21010134输出示例 壹万零壹佰零壹圆叁拾肆圆我和程序:#include&iostream&#include&map&int main(){
int a[10],b[10];
char* c[8];
c[0]=&圆&;
c[1]=&拾&;
c[2]=&佰&;
c[3]=&仟&;
c[4]=&万&;
c[5]=&舍&;
c[6]=&佰&;
c[7]=&仟&;
map&int,string&f;
map&int,string&::
f.insert(map&int, string&::value_type (0,&零&));
f.insert(map&int, string&::value_type (1,&壹&));
f.insert(map&int, string&::value_type (2,&贰&));
f.insert(map&int, string&::value_type (3,&参&));
f.insert(map&int, string&::value_type (4,&肆&));
f.insert(map&int, string&::value_type (5,&伍&));
f.insert(map&int, string&::value_type (6,&陆&));
f.insert(map&int, string&::value_type (7,&柒&));
f.insert(map&int, string&::value_type (8,&捌&));
f.insert(map&int, string&::value_type (9,&玖&));
while(n--){
if(x==0){ cout&&&零圆&&& }
if(x&0){ cout&&&负&; x*=-1; }
for(i=0;x/10;i++){ a[i]=x%10; x/=10; }
while(i&=0)
if(a[i]==0){
for(;a[i]==0&&i&=4;i--);
cout&&c[4];
if(a[3]!=0) cout&&f[0];
else cout&&f[0];
for(;a[i]==0&&i&=0;i--);
if(i==-1) cout&&c[0];
else cout&&f[0];
iter=f.find(a[i]);
cout&&iter-&second&&c[i];
return 0;}
提问者采纳
#include &stdafx.h&#include &string&#include &iostream&#include &algorithm&// 将数字对应的中文返回string GetCName(int nVal, int nUnit){ // 根据当前位置判断额度与单位 string ArrCName[] = {&零&, &壹&, &贰&, &参&, &肆&, &伍&, &陆&, &柒&, &捌&, &玖&}; string ArrUnit[] = {&元&, &拾&, &佰&, &仟&, &万&, &舍&, &佰&, &仟&}; // 合并 string strT if (nVal == 0) // 防止出现零万零佰等情况,还有很多其它情况
strTemp = ArrCName[nVal]; else
strTemp = ArrCName[nVal] + ArrUnit[nUnit]; return strT}int main(){ int nV
// 阿拉伯 string strV // 中文 cout&&&请输出额度:&; cin&&nV // 把数据与10相取并取余逐位判断 int nUnit=0; // 单位仟,万什么的 while (nVal != 0) {
int nR // 余数
nRemainder = nVal%10;
nVal = nVal / 10;
strVal = GetCName(nRemainder, nUnit++) + strV } cout&&strVal&& return 0;}我没有直接用你的代码,而是新写了一段,我觉得这个题还是比较有意思的转换到中文后还会有很多种情况我就没有一一进行判断,像1000001会出现很多零呀什么,你自己来做吧,对防错也没有进行处理,有需要自己加,主要是交流思路
提问者评价
谢谢你的回答
其他类似问题
为您推荐:
您可能关注的推广
人民币的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1至10大写怎么写_百度知道
1至10大写怎么写
不是一二·的大写哦···比如壹
我有更好的答案
one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty twenty_one twenty_two twenty_three twenty_four twenty_five twenty_six twenty_seven twenty_eight twenty-nine thirty thirty_one thirty_two thirty_three thirty-four thirty_five thiety_six thirty_seven thirty_eight thirty_nine fourty fourty_one fourty_two fourty_three fourty_four fourty_five fourty_six fourty_seven fourty_eight fourty_nine fifty fifty_one fifty_two ffifty_three fifty_four fifty_six fifty_seven fifty_eight fifty_nine sixty sixty_one sixty_two sixty_three sixty_four sixty_five sixty_six sixty_seven sixty_eight s...
应该是壹仟零贰拾叁万肆仟五佰陆拾柒点捌玖拾这么写吧
壹仟零贰拾叁万肆仟五佰陆拾柒点捌玖拾
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁人民币金额小写转换大写 - CODING WAY - ITeye技术网站
博客分类:
准备跳槽,找了网上的笔试题看了一下, 发现常考金额转换成大写的编程题。
网上给出的答案不太满意,iteye上搜索一下, 有不少人给出一些例子,很多转换结果不准确,还有人说不到30行代码就能完成,我一看代码,天书而已, 立马摒弃掉了。
思考一番, 也写了下代码,测试也没问题,有兴趣的朋友可以提提意见。
网上其他人的代码大多是只能转换整数最多13位,一般转换方案都是下面两种(第一种看完都不想再当码农了
,第二种看似挺好, 但是处理起来截取字符串麻烦,容易因规则太复杂找不到出路):
String capUnit[] = {'万','亿','万','圆',''};
String capDigit[][] = { {''},{''},{'角','分',''},{''} {'仟','佰','拾',''}};
String capNum[]={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};
String big = "壹贰叁肆伍陆柒捌玖";
String digit = new Array("圆拾佰仟万拾佰仟亿拾佰仟万","角分");
我自己写的代码方案与第一种差不多,思路绝对清晰明了,代码里写得很清楚:
package com.liany.demo.
import java.math.BigD
import java.text.DecimalF
* 金额转换成大写
* @author modiliany
public class TransformMoney {
以下摘自百度百科:/view/359995.htm
大写数字规则
中文大写金额数字应用正楷或行书填写,如壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整(正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、廿、毛、另(或0)填写,不得自造简化字。如果金额数字书写中使用繁体字,如贰、陆、亿、万、圆的,也可。
中文大写金额数字到"元"为止的,在"元"之后,应写"整"(或"正")字,在"角"之后,可以不写"整"(或"正")字。大写金额数字有"分"的,"分"后面不写"整"(或"正")字。
中文大写金额数字前应标明"人民币"字样,大写金额数字有"分"的,"分"后面不写"整"(或"正")字。
中文大写金额数字前应标明"人民币"字样,大写金额数字应紧接"人民币"字样填写,不得留有空白。大写金额数字前未印"人民币"字样的,应加填"人民币"三字。在票据和结算凭证大写金额栏内不得预印固定的"仟、佰、拾、万、仟、佰、拾、元、角、分"字样。
阿拉伯数字小写金额数字中有"0"时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下:
阿拉伯数字中间有"0"时,中文大写要写"零"字,如¥1409.50,应写成人民币壹仟肆佰零玖元伍角。
阿拉伯数字中间连续有几个"0"时,中文大写金额中间可以只写一个"零"字,如¥6007.14,应写成人民币陆仟零柒元壹角肆分。
阿拉伯金额数字万位和元位是"0",或者数字中间连续有几个"0",万位、元位也是"0",但千位、角位不是"0"时,中文大写金额中可以只写一个零字,也可以不写"零"字。如¥1680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分,又如¥,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。
阿拉伯金额数字角位是"0",而分位不是"0"时,中文大写金额"元"后面应写"零"字。如¥16409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾伍元零肆分。
static final String big = "零壹贰叁肆伍陆柒捌玖";
static final String[] units = {"仟佰拾", "角分"}; //单位
* 双精度浮点数转换成字符串
* 1、如果直接用String.toString(double d)方法,超大数额会出现科学计数法的字符串;
* 2、如果整数部分超过15位数,低位部分可能出现误差,所以不支持超过15位整数的数值,
一般数据库设计金额字段时都不会超过15位整数,如oracle用Number(18,3)的类型表示,整数部分最多15位,小数点后保留3位有效数字。
public static String getDecimalStr(double d){
//设置小数点后的精度,保留两位
/*四舍五入结果参考:
0.005,//0.01入
0.015,//0.01舍
0.025,//0.03入
0.035,//0.04入
0.045,//0.04舍
0.055,//0.06入(前一位是5则入)
String str = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
//经过测试,以下三种方法都是可以用的:
String str = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString();
DecimalFormat format = new DecimalFormat();
format.applyPattern("#################0.00");
String str = format.format(d);
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumFractionDigits(2);
decimalFormat.setMaximumFractionDigits(2);
decimalFormat.setGroupingUsed(false);
decimalFormat.setMaximumIntegerDigits(15);
decimalFormat.setMinimumIntegerDigits(15);
str=decimalFormat.format(d);
//如果结果是整数,则去掉尾巴
if(str.endsWith(".00")){
str = str.replace(".00", "");
* 金额是double类型的要先转换成字符串
* @param money 金额
public static String transform(double money){
String moneyStr = getDecimalStr(money);
return transform(moneyStr);
* 金额转换成大字
* 我的思路:
* 1、double数值转换成数值字符串
* 2、处理整数部分:
填充到16位,不足16位则前面补'0',然后右起分成四组,每组根据"x仟x佰x拾x"的规则转换成大写,若该组为"0000"则结果是"零";
对这四组结果从高位到低位拼接起来,规则:[组4]万[组3]亿[组2]万[组1]圆。
* 3、处理小数部分(不多说)
public static String transform(String moneyStr){
String[] parts = moneyStr.split("\\."); //区别整数、小数部分
String result = "";
//处理整数部分
int length = parts[0].length(); //整数部分的位数
if(length&15){
return "金额太大,不能处理整数部分超过15位的金额!";
String intPart = parts[0];
//填充到16位,因为是分4组,每组4个数字
while(intPart.length()&16){
intPart = '0' + intP
//共分四组,右起四位一组,例如:30,3400
String[] groups = new String[4];
for(int i=0; i & groups. i++){
int start = intPart.length()-(i+1)*4; //开始位置
int end = intPart.length()-i*4;
//结束位置
groups[i] = intPart.substring(start, end);
groups[i] = transformGroup(groups[i]); //当前组的四位数字转换成大写
//对这四组结果从高位到低位拼接起来,规则:[组4]万[组3]亿[组2]万[组1]圆
for(int i=groups.length-1; i&=0; i--){
if(i==3){ //第四组:万亿级
if(!"零".equals(groups[i])){
result += groups[i] + "万";
}else if(i==2){ //第三组:亿级
if(!"零".equals(groups[i])){
result += groups[i] + "亿";
if(result.length()&0){
result += "亿";
}else if(i==1){ //第二组:万级
if(!"零".equals(groups[i])){
result += groups[i] + "万";
}else if(!groups[i].startsWith("零")){
result += groups[i];
}else{ //第一组:千级
if(!"零".equals(groups[i]) || result.length()==0){
result += groups[i];
result += "圆";
if(!"零圆".equals(result) && result.startsWith("零")){
result = result.substring(1, result.length()); //最前面的可能出现的“零”去掉
//处理小数部分
if(parts.length==2){
String decimalPart = parts[1]; //小数部分
for(int i=0; i & decimalPart.length();i++){
int num = Integer.valueOf(decimalPart.charAt(i) + ""); //提取数字,左起
result += big.charAt(num) + "" + units[1].charAt(i); //数字变大写加上单位
result = result.replace("零角", "零"); //去掉"零角"的"角"
result = result.replace("零分", ""); //去掉"零分"
result += "整"; //没有小数部分,则加上“整”
* 处理整数部分的组,右起每四位是一组
* @param group 四位数字字符串
public static String transformGroup(String group){
String result = "";
int length = group.length();
for(int i=0; i & i++){
int digit = Integer.valueOf(group.charAt(i)+""); //单个数字,左起
String unit = ""; //单位
if(i!=length-1){
unit = units[0].charAt(i) + "";
result += big.charAt(digit) + //数字变大写加上单位
result = result.replace("零仟", "零");
result = result.replace("零佰", "零");
result = result.replace("零拾", "零");
while(result.contains("零零")){
result = result.replace("零零", "零"); //如果有“零零”则变成一个“零”
if(!"零".equals(result) && result.endsWith("零")){
result = result.substring(0, result.length()-1); //最未尾的可能出现的“零”去掉
* @param args
public static void main(String[] args) {
double[] testData = {
//测试数据一
//测试数据二
//测试数据三
//测试数据四(含小数)
0.005,//0.01(转换成字符串后)
0.015,//0.01
0.025,//0.03
0.035,//0.04
0.045,//0.04
0.055,//0.06
//测试数据五(整数超过15位)
for(double money : testData){
String moneyStr = getDecimalStr(money);
System.out.println( moneyStr + ":" + transform(moneyStr));
//打印结果:
10:壹拾圆整
100:壹佰圆整
1000:壹仟圆整
10000:壹万圆整
100000:壹拾万圆整
1000000:壹佰万圆整
:壹仟万圆整
:壹亿圆整
:壹拾亿圆整
:壹佰亿圆整
:壹仟亿圆整
0:壹万亿圆整
00:壹拾万亿圆整
000:壹佰万亿圆整
000:壹佰壹拾万亿圆整
000:壹佰零壹万亿圆整
000:壹佰万壹仟亿圆整
000:壹佰万零壹佰亿圆整
000:壹佰万零壹拾亿圆整
000:壹佰万零壹亿圆整
000:壹佰万亿壹仟万圆整
000:壹佰万亿零壹佰万圆整
000:壹佰万亿零壹拾万圆整
000:壹佰万亿零壹万圆整
000:壹佰万亿壹仟圆整
100:壹佰万亿零壹佰圆整
010:壹佰万亿零壹拾圆整
001:壹佰万亿零壹圆整
101:壹佰零壹万零壹佰零壹亿零壹佰零壹万零壹佰零壹圆整
100:壹佰万壹仟零壹亿零壹拾万零壹佰圆整
001:壹佰万壹仟亿壹仟零壹万零壹圆整
010:壹佰万壹仟亿零壹佰万零壹拾圆整
000:壹佰万零壹拾亿壹仟圆整
010:壹佰万零壹佰亿零壹拾万零壹拾圆整
111:壹佰壹拾壹万壹仟壹佰壹拾壹亿壹仟壹佰壹拾壹万壹仟壹佰壹拾壹圆整
345:壹佰贰拾叁万肆仟伍佰陆拾柒亿捌仟玖佰零壹万贰仟叁佰肆拾伍圆整
0.01:零圆零壹分
0.01:零圆零壹分
0.03:零圆零叁分
0.04:零圆零肆分
0.04:零圆零肆分
0.06:零圆零陆分
1.38:壹圆叁角捌分
10.13:壹拾圆壹角叁分
100.02:壹佰圆零贰分
1000.04:壹仟圆零肆分
10000.06:壹万圆零陆分
:壹拾万圆壹角
:壹佰万圆壹角壹分
:壹仟万圆壹角
:壹亿圆壹角壹分
.01:壹拾亿圆零壹分
0000:金额太大,不能处理整数部分超过15位的金额!
0000:金额太大,不能处理整数部分超过15位的金额!
个人觉得代码宜读、宜于维护才是最重要,转换大写这个小功能没有必要追求什么超高性能。
浏览: 174697 次
来自: 珠海
什么呀,写的不清不楚的。你是采用的什么监听事件呀
谢谢,解决了。
其实解决办法很简单的,只要架上对应的jar包就可以了。
受教了,感谢!
好,太好了.谢谢元大写是贰拾万肆仟捌佰贰拾肆元柒角肆分吗.贰拾万后面可以不加零吧._作业帮
元大写是贰拾万肆仟捌佰贰拾肆元柒角肆分吗.贰拾万后面可以不加零吧.
元大写是贰拾万肆仟捌佰贰拾肆元柒角肆分吗.贰拾万后面可以不加零吧.
不加零是正解

我要回帖

更多关于 仟大写 的文章

 

随机推荐