java程序---将一个浮点数转换成人民币读法

代码如下:

<span style="font-size:18px;">package test;

import java.util.Scanner;

//将输入的浮点型钱数,转成人民币读法
public class Num2Rmb {

	private static double num;
	private long zheng,xiao;
	private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
	private String[] danwei={"千","百","十",""};
	private String[] jinwei={"","万","亿"};
	private int[][] temp= new int[4][18];

	//将输入的钱数,转成小数和整数部分
	private void swp(){

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

	//将整数部分按四位划分成3个部分,不存在的补0
	private void divide(){

		int i,j,k=0;
		for(i=0;i<3;i++){

			long t1=zheng%10000;
			int t=(int) t1;
			zheng=zheng/10000;
			for(j=3;j>=0;j--){
				temp[i][j]=t%10;
				t=t/10;
			}
		}
	}

	//检测是否要对当前的四位进行处理
	private int check(int i){

	     for(int j=0;j<4;j++)
	    	 if(temp[i][j]!=0)
	    		 return 1;
	     return 0;
	}

	//打印结果
	private void print(){

		//先处理整数部分
	    //flag用于表示当前部分是否要处理前导0
		int i,j,k,flag=0,cnt=0,flag2=0;
		for(i=2;i>=0;i--){
			if(check(i)==0){
				if(flag==1&&cnt==0){
					System.out.print("零");
					cnt++;
				}
				flag=0;
				continue;
			}
			//处理前导0
			for(j=0;j<4;j++)
				if(temp[i][j]!=0)
					break;
			flag2=1;
			if(j!=0&&flag==1)
				System.out.print("零");
			int d;
			//将末尾的0去掉
			for(d=3;d>=0;d--)
				if(temp[i][d]!=0)
					break;
			for(k=j;k<=d;k++){
				if(temp[i][k]!=0)
				   System.out.print(hanArr[temp[i][k]]+danwei[k]);
				else if(k-1>=0&&temp[i][k-1]!=0){
					System.out.print(hanArr[0]);
				}
			}
			flag=1;
			System.out.print(jinwei[i]);
		}
		if(flag2==1)
		  System.out.print("元");
		//处理小数部分
		if(xiao/10!=0)
			System.out.print(hanArr[(int)xiao/10]+"角");
		if(xiao%10!=0)
			System.out.print(hanArr[(int)xiao%10]+"分");
		System.out.println();

	}

	//对外的运行接口
	public void run(){

		swp();
		divide();
		print();
	}

	public static void main(String[] args){

	    Scanner sc= new Scanner(System.in);
	    System.out.println("请输入钱数:");
		while(sc.hasNext()){

			num = sc.nextDouble();
			Num2Rmb nr =new Num2Rmb();
			/*
			//调试部分
		    nr.swp();
			System.out.println(nr.zheng+" "+nr.xiao);
		    nr.divide();
			for(int i=2;i>=0;i--){

				for(int j=0;j<4;j++)
					System.out.print(nr.temp[i][j]);
				System.out.println();
			}
			nr.print();
			*/
			nr.run();
		    System.out.println("请输入钱数:");
		}
	}
}
</span>
时间: 2024-08-03 19:53:38

java程序---将一个浮点数转换成人民币读法的相关文章

C语言将一个字符串转换成整数

1.环境 ubuntu16.04 Eclipse C语言 2.问题 用C语言编写程序,将一个字符串转换成整数. 3.解决方法 程序代码:https://github.com/southeast02/JZOF/blob/master/chap01_page12_1.c

java 将一个正整数翻译成人民币大写的读法

程序如下: 1 import java.lang.StringBuffer; 2 /** 3 给定一个浮点数,将其装换成人民币大写的读法 4 88.5:捌十捌元零伍角 5 */ 6 public class Num2Rmb 7 { 8 private String[] hanArr={"零","壹","贰","叁","肆","伍","陆","柒",

浮点数转换成字符串函数

sprintf函数太大,在STM8上面根本不敢用,动不动就.text overflow.为了将采集的数值通过串口上传到计算机,只能自己写了一个浮点数转换成字符串的函数: #include <stdio.h> #include <stdint.h> static char table[]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; void num2char(char *str, double number, uint8_t

java的byte数组转换成在[0,255]范围内

C#的byte    是 0-255java的byte  是 -128-127  java的byte数组转换成在[0,255]范围内int data[]= new int[bytes.length];for(int i=0;i<bytes.length;i++) { data[i] = bytes[i] & 0xff;}

javascript将浮点数转换成整数

Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt 位运算符 Math.floor Math.ceil Description 一.parseInt 1. 实例 (1).parseInt("13nash");//13 (2).parseInt("")// NaN (3).parseInt("0xA") //10(十六进制) (4).parseInt(" 13")//13 (5)

js 将数字转换成人民币大写的方法

//将数字转换成人民币大写的方法 var digitUppercase = function (n) { var fraction = ['角', '分']; var digit = [ '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' ]; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var IsNum = Number(n); if (!isNaN(IsNum)) { var hea

javascript浮点数转换成整数三种方法

将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt位运算符Math.floor Math.ceil Description 一.parseInt 1. 实例 parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")/

JAVA把毫秒数转换成日期

long sd=1345185923140L; Date dat=new Date(sd); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(dat); java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String sb=format.format(gc.getTime()); Sys

Java 里把 InputStream 转换成 String 的几种方法

我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之前我常用的办法就是按字节一次次读到缓冲区,或是建立 BufferedReader 逐行读取.其实大可不必费此周折,我们可以用 Apache commons IOUtils,或者是 JDK 1.5 后的 Scanner,还可用 Google  Guava 库的 CharStreams.到了 JDK7,