`

四位数数字字符串转换成中文字符串(完善)

 
阅读更多

比如4230-->四千二百三十

/* 把一个四位数字符串转换成一个中文读法
 * 
 * 把一个浮点数拆分,小数部分保留两位数
 * 
 * 
 * 
 * */

package com.yangyang.array;

import java.util.Arrays;

public class Num2Rmb {
	private String[] hanArr = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌",
			"玖" };
	private String[] unitArr = { "拾", "佰", "仟" };

	/*
	 * 把一个浮点数分解成整数部分和小数部分
	 */
	private String[] divide(double num) {
		// 将一个浮点数强制转换为long,得到整数部分
		long zheng = (long) num;

		// 浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整的到两位小数

		long xiao = Math.round((num - zheng) * 100);

		return new String[] { zheng + "", String.valueOf(xiao) };// 返回的是数组的地址

	}

	private String toHanStr(String numStr) {
		String result = "";

		int numLen = numStr.length();

		for (int i = 0; i < numLen; i++) { // 对字符串包含的每个字符进行遍历转换成相应的数字
			int num = numStr.charAt(i) - 48;
			// int lastNum=numStr.charAt(numLen-1)-48;
			if (i != numLen - 1) {
				if (num != 0) {
					result += hanArr[num] + unitArr[numLen - 2 - i];
				}

				else {
					if ((numStr.charAt(i - 1) - 48) == 0) {
						continue;
					}
					if (num == 0 && (numStr.charAt(i + 1) - 48) == 0
							&& (numStr.charAt(i + 2) - 48) == 0) {
						continue;
					}
					result += hanArr[num];
				}

			} else {
				if (num == 0 && (numStr.charAt(i - 1) - 48) != 0) {
					continue;
				}

				if (num == 0 && (numStr.charAt(i - 1) - 48) == 0) {
					continue;
				} else if (num == 0 && (numStr.charAt(i - 1) - 48) == 0
						&& (numStr.charAt(i - 2) - 48) == 0) {
					continue;
				}

				result += hanArr[num];

			}

		}
		return result;

	}

	public static void main(String[] args) {
		Num2Rmb nr = new Num2Rmb();
		System.out.println(Arrays.toString(nr.divide(236711125.123)));
		System.out.println(nr.toHanStr("6005"));
	}

}

虽然写出,但思绪很乱


分享到:
评论

相关推荐

    Labview10进制浮点数IEEE754与字符串16进制之间的转换

    在LabVIEW中,你可以先将16进制字符串转换为二进制字符串,然后再通过IEEE 754标准将其转换为浮点数。反之,将浮点数转换为16进制字符串时,首先要将其转换为二进制,然后转成16进制表示。这个过程可以使用“数到...

    mysql函数,将数字金额转成人民币大写

    在`...`部分,你需要填充实现数字到汉字转换的代码,这通常涉及到将数字拆分成整数部分和小数部分,分别处理,然后根据每个位上的数字找到对应的汉字。 2. **字符串处理函数** 如果不创建自定义函数,可以使用...

    字符串加密算法详解.pdf

    - **原理**:使用哈希函数将任意长度的字符串转换为固定长度的哈希值,该哈希值通常具有不可逆性。 - **特点**:常用于密码存储和验证,而不是直接用于加密通信数据。 8. **对称加密算法(Symmetric Encryption)...

    C# 数字大小写转换器 实例源码(系统操作

    4. **循环遍历**:遍历数字字符串的每个字符,根据映射表找到对应的汉字,然后添加到`StringBuilder`中。 5. **特殊处理**:在中文数字表示中,有特定的组合规则,如1200不能简单地表示为“壹仟贰佰”,而应为“壹...

    人民币大写转换的程序源码

    这里使用`Str`函数将数值转换为字符串,并通过`Allt`函数对字符串进行格式调整。参数`16,2`可能用于指定小数点后保留的位数,但根据描述,此程序专注于整数部分的转换,故此处的参数设置意义不大。 ##### 2. 数字...

    vb.net2010 大写数字转换程序

    在VB.NET中实现这个功能,我们可以创建一个类或者函数,它接受一个整数或字符串作为输入,然后返回对应的中文大写数字字符串。这里的关键在于创建一个映射表,将每个数字与它的中文大写形式关联起来。这个映射表可以...

    自己用汇编写的判断输入的四位数是否是闰年的程序

    这同样可能涉及系统调用,比如`INT 21H`的子功能`AH=09H`用于显示字符串。 5. **错误处理**:确保输入的是有效的四位数,并处理可能出现的边界情况,如0000或9999以上的年份。 6. **程序结构**:由于汇编语言没有...

    金额小写转换为大写

    在金融、会计以及其他涉及货币处理的应用场景中,将数字金额转换成汉字大写格式是非常常见的需求。这种转换不仅有助于提高数据的可读性,还能够减少因小数点误读而引发的错误。下面我们将详细解析一个用于将人民币...

    JavaScript实现阿拉伯数字和中文数字互相转换

    - 转换算法通过`ChineseToNumber`函数实现,其通过遍历中文数字字符串,将每个字符或权位转换成相应的数值并求和,最终得到阿拉伯数字。 以上两部分共同构成了阿拉伯数字和中文数字互相转换的核心算法和实现逻辑。...

    Linux C 函数手册.pdf

    2. 字符串转换篇 此部分包含了一系列将字符串和数字相互转换的函数,包括: - atof():字符串转浮点数。 - atoi():字符串转整数。 - atol():字符串转长整型数。 - gcvt():浮点数转字符串,指定小数点后的位数。 -...

    javasciprt操作数字

    // true,宽松相等会将字符串转换为数字 console.log(1 === "1"); // false,严格相等比较值和类型 ``` 4. **数学函数**: `Math`对象包含许多数学常量和函数,如`Math.PI`、`Math.random()`、`Math.max()`和`...

    阿拉伯数字转大写

    代码中的核心逻辑是将输入的阿拉伯数字字符串进行处理,然后根据其每一位上的数字值进行转换。具体步骤包括: - 使用 `split(".")` 将整数部分和小数部分分开。 - 对于整数部分,从后向前遍历每一个数字,并根据当前...

    浙江省高等学校计算机等级考试二级C语言上机练习-C程序调试(附参考答案)精简版

    在将数字转换为字符串的练习中,定义itoa函数,逐步递推计算每一位数字,并通过循环将其转换为对应的字符,最终形成完整的字符串。这类练习有助于学生理解递推法的思想,并提高逻辑思维与编程技巧。 五、错误调试 ...

    计算机机试题目

    - 具体处理逻辑是:将原字符串及其反转后的字符串连接起来。 - 如输入为“ABCDE”,则输出应为“ABCDEEDCBA”。 2. **函数实现解析:** - 使用`strlen`函数获取字符串长度。 - 循环遍历原字符串,将其逐个字符...

    java转换输出

    然后根据数字的位数,逐位转换并组合成完整的汉字数字。 在`main`方法中,我们调用`convertNumberToChinese`并打印出转换结果。如果需要处理更大的数字,如万、亿等,可以继续扩展这个方法,增加更多的位数处理逻辑...

    number-to-words:将数字转换为它们的文字格式,即。 1045到一千四十五

    "number-to-words"项目正是为了实现这个功能,它是一个Java库,能够将数字从阿拉伯数字形式转换成中文文字形式。例如,数字1045会被转换为“一千四十五”。 在Java编程中,实现这个功能需要对字符串操作、条件判断...

    textbox加入千分位

    - **解析数字**:使用`decimal.Parse`方法将不含逗号的字符串转换为数值类型。 - **格式化输出**:使用`ToString("#,0")`将数字格式化为带有千分位分隔符的字符串。这里`#`表示数字位,`,`是千分位分隔符,`0`表示...

    大数计算器乘法算法及代码

    主函数首先获取用户输入的两个大数字符串,然后调用`GetDigits`函数将字符串转换成整型数组形式,接着调用`multiply`函数进行乘法运算,最后输出结果。 ```c main() { char s1[N], s2[N]; int i, j, a[N], b...

    人民币数字转换成大写形式

    例如,创建一个映射对象,将数字0-9映射到对应的汉字大写形式,然后通过字符串替换方法逐个替换数字。对于十至十九和百至千,可以通过额外的条件判断进行处理。同时,为了处理小数部分,还需要对小数点进行特殊处理...

    千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码

    代码中定义了一个名为`numFormat`的函数,该函数接收两个参数:`number`为要格式化的数字(可以是数字类型或数字字符串),`d`为指定逗号隔开的位数,默认为3。 实现细节上,代码首先定义了一个数字数组`numArrs`...

Global site tag (gtag.js) - Google Analytics