將萬億以下的阿拉伯數字轉為中文金額

package test.practice.month3;

public class Test005 {
//可以不用swich case將123456789轉為一二三四五六七八九
//直接用char[] chars= {'一','二','三','四','五','六','七','八','九'};

public static void main(String[] args) {
System.out.println(getCMoney(102030405067L));
}
private static String getCMoney(long n) {
String result="";
int i=new Long(n/100000000).intValue();
if(i!=0) {
result=result+getThousand(i)+'億';
}
i=new Long((n%100000000)/10000).intValue();
if(i!=0) {
result=result+getThousand(i)+'萬';
}else {
result=result+'零';
}
i=new Long(n%10000).intValue();
if(i!=0) {
result=result+getThousand(i);
}
result+="元整";
if(result.charAt(0)=='零') {
result=result.substring(1);
}
return result;
}
private static String getThousand(int n) {
String result="";
int i=n/1000;
if(i!=0) {
result=result+getChar(i)+'仟';
}
i=(n%1000)/100;
if(i!=0) {
result=result+getChar(i)+'佰';
}
else {
result=result+'零';
}
i=(n%100)/10;
if(i!=0) {
result=result+getChar(i)+'拾';
}
else {
result=result+'零';
}
i=n%10;
if(i!=0) {
result=result+getChar(i);
}
result=result.replace("零零", "零");
if(result.charAt(0)=='零') {
result=result.substring(1);
}
if(result.charAt(result.length()-1)=='零') {
result=result.substring(0, result.length()-1);
}
return result;
}
private static char getChar(int i) {
char c;
switch(i) {
case 1:
c='壹';
break;
case 2:
c='貳';
break;
case 3:
c='叁';
break;
case 4:
c='肆';
break;
case 5:
c='伍';
break;
case 6:
c='陸';
break;
case 7:
c='柒';
break;
case 8:
c='捌';
break;
case 9:
c='玖';
break;
default:c='越';
}
return c;
}
}

?

網上找來的別人的更好的方法

public class Test007 {
private static final char[] UNIT = "萬千佰拾億千佰拾萬千佰拾元角分".toCharArray();
private static final char[] DIGIT = "零壹貳叁肆伍陸柒捌玖".toCharArray();
private static final double MAX_VALUE = 9999999999999.99D;

public static String change(double v) {
if (v < 0 || v > MAX_VALUE) {
return "參數非法!";
}
long l =(long)(v*100);
if (l == 0) {
return "零元整";
}
String strValue = l + "";
// j用來控制單位
int j = UNIT.length - strValue.length();
String rs = "";
boolean isZero = false;
for (int i = 0;i < strValue.length(); i++, j++) {
char ch = strValue.charAt(i);
if (ch == '0') {
isZero = true;
if (UNIT[j] == '億' || UNIT[j] == '萬' || UNIT[j] == '元') {
rs = rs + UNIT[j];
isZero = false;
}
} else {
if (isZero) {
rs = rs + "零";
isZero = false;
}
rs = rs + DIGIT[ch - '0'] + UNIT[j];
}
}
if (!rs.endsWith("分")&&!rs.endsWith("角")) {
rs = rs + "整";
}
rs = rs.replaceAll("億萬", "億");
rs = rs.replaceAll("^壹拾", "拾");
return rs;
}
public static void main(String[] args) {
System.out.println(Test007.change(9999999999999.90D));
}
}

轉載于:https://www.cnblogs.com/yuezeyuan/p/7754530.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454192.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454192.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454192.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

8.2 命令歷史

2019獨角獸企業重金招聘Python工程師標準>>> 命令歷史 history //查看之前的命令.bash_history //存放之前敲過的命令&#xff0c;在 /root/ 目錄下最大1000條 //默認參數值是1000條變量HISTSIZE/etc/profile中修改 //在其中可編輯HISTSIZE參數HISTTIMEFORMAT"…

使用GCC生成無格式二進制文件(plain binary files)

使用C語言生成一個二進制文件 使用自己喜歡的文本編輯器寫一個test.c&#xff1a; int main() { } 再使用如下命令編譯&#xff1a; gcc –c test.c ld –o test –Ttext 0x0 –e main test.o objcopy –R .note –R .comment –S –O binary test test.bin 最后生成的二進…

TensorFlow 實例一:線性回歸模型

代碼 # -- encoding:utf-8 -- """ Create by ibf on 2018/5/6 """import numpy as np import tensorflow as tf# 1. 構造一個數據 np.random.seed(28) N 100 x np.linspace(0, 6, N) np.random.normal(loc0.0, scale2, sizeN) y 14 * x - …

python后端數據發送到前端_Python Django 前后端數據交互 之 后端向前端發送數據...

Django 從后臺往前臺傳遞數據時有多種方法可以實現。最簡單的后臺是這樣的&#xff1a;from django.shortcuts import renderdefmain_page(request):return render(request, ‘index.html‘)這個就是返回index.html的內容&#xff0c;但是如果要帶一些數據一起傳給前臺的話&…

Dapper的基本使用

Dapper是.NET下一個micro的ORM&#xff0c;它和Entity Framework或Nhibnate不同&#xff0c;屬于輕量級的&#xff0c;并且是半自動的。也就是說實體類都要自己寫。它沒有復雜的配置文件&#xff0c;一個單文件就可以了。給出官方地址。 http://code.google.com/p/dapper-dot-n…

函數名作為參數傳遞

假如不知道signal的函數原型&#xff0c;考慮child_handler函數的參數從哪里來&#xff1f; void child_handler(int sig) { if (sig SIGINT) kill(pid_parent, SIGUSR1); } int main(void) { ...... signal(SIGINT, child_handler); ...... } 1、…

易語言神經網絡驗證碼識別_遞歸神經網絡 GRU+CTC+CNN 教會驗證碼識別

利用 NLP 技術做簡單數據可視化分析Chat 簡介&#xff1a;用遞歸神經網絡采用端到端識別圖片文字&#xff0c;遞歸神經網絡大家最早用 RNN &#xff0c;缺陷造成梯度消失問題&#xff1b;然后采用了 LSTM&#xff0c;解決 RNN 問題&#xff0c;并且大大提高準確率&#xff1b;現…

GCC 生成的符號表調試信息剖析

GCC把C語言源文件&#xff08;&#xff07;.c&#xff07;&#xff09;編譯成匯編語言文件&#xff08;&#xff07;.s&#xff07;&#xff09;&#xff0c;匯編器把匯編語言文件翻譯成目標文件&#xff08;&#xff07;.o&#xff07;&#xff09;&#xff0c;最后由鏈接器鏈…

《操作系統》OS學習(一):OS相關

清華大學操作系統OS&#xff08;向勇、陳渝&#xff09;視頻地址&#xff1a;http://www.xuetangx.com/courses/course-v1:TsinghuaX30240243Xsp/about 在ucore實驗中&#xff0c;一些基本的常用工具如下&#xff1a; 命令行shell: bash shell -- 有對文件和目錄操作的各種命令…

Android4.0藍牙使能的詳細解析

毫無疑問&#xff0c;bluetooth的打開是在Settings中進行的操作。因此&#xff0c;冤有頭&#xff0c;債有主&#xff0c;我們來到了Settings.java中&#xff0c;果然發現了相關的代碼如下&#xff1a; mBluetoothEnabler new BluetoothEnabler(context, new Switch(context));…

第一次沖刺

本人小組分工角色&#xff1a;產品負責人 本組沖刺訂單介紹&#xff1a;經過小組的成員討論&#xff0c;我們大概確立了一個沖刺的訂單是完成一個簡易的長沙學院網站項目。 最后完成情況概述&#xff1a;經過大約兩周的努力&#xff0c;我們組的編程人員運用python構建了一個簡…

移動端導出excel_連載系列【4】Excel開發移動端quot;APPquot;

前三篇文章介紹了百度地圖生成器、源代碼編輯器、GPS經緯度批量轉換工具、源代碼編輯器中添加自定義功能按鈕和地圖控件。這些寫好的Java Script代碼雖然可以實現所有期望的結果&#xff0c;但畢竟不是一個HTML文件&#xff0c;不便于傳播和使用&#xff0c;更無法變成一個類似…

《操作系統》OS學習(二):啟動、中斷、異常

Bootloader:加載OS。操作系統一開始是放在DISK&#xff08;硬盤&#xff09;中&#xff0c;并不是放在內存中。 BIOS&#xff1a;基本I/O處理系統。存放在ROMRead-Only Memory&#xff09;只讀存儲中 BIOS&#xff08;Basic Input/Output System&#xff09;基本輸入輸出系統。…

[GCC for C]編譯選項---IDE掩蓋下的天空

編譯選項 ---------IDE掩蓋下的天空 /*************************************** * gcc for c language ***************************************/ Single Source to Executable $ gcc helloworld.c [-o howdy] 默認生成的名字a.exe ______________________________________ …

2016級算法第二次上機-F.ModricWang's Number Theory II

891 ModricWangs Number Theory II 思路 使得序列的最大公約數不為1&#xff0c;就是大于等于2&#xff0c;就是找到一個大于等于2的數&#xff0c;它能夠整除序列中的所有數。 考慮使得一個數d整除數組中所有數的代價&#xff1a; 如果一個數不能被b整除&#xff0c;那么可以花…

常用css屬性集(持續更新…)

禁止換行&#xff0c;超出部分顯示…&#xff1a;a. 代碼&#xff1a;.hide_word{ max-width: 100px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } b. 效果&#xff1a; 本文轉自 bilinyee博客&#xff0c;原文鏈接&#xff1a; http://blog.51cto.co…

parallels網絡初始化失敗_33 個神經網絡「煉丹」技巧

自然語言處理Andrej Karpathy 是深度學習計算機視覺領域、與領域的研究員。博士期間師從李飛飛。在讀博期間&#xff0c;兩次在谷歌實習&#xff0c;研究在 Youtube 視頻上的大規模特征學習&#xff0c;2015 年在 DeepMind 實習&#xff0c;研究深度強化學習。畢業后&#xff0…

《操作系統》OS學習(三):系統調用

例子 首先看一個標準C庫的例子&#xff1a;當我們程序中使用了C庫中的printf()函數&#xff0c;實際在底層是在內核態中調用了write()函數。圖中右側則是將程序代碼與C庫都算到應用程序中&#xff0c;內核提供了一個系統調用接口。 從這個例子我們可以得到以下幾點&#xff1a…

cygwin/gcc與MinGW

cygwin/gcc和MinGW都是gcc在windows下的編譯環境&#xff0c;但是它們有什么區別?在實際工作中如何選擇這兩種編譯器呢?cygwin/gcc完全可以和在linux下的gcc劃等號&#xff0c;這個從boost庫的劃分中就可以看出來端倪&#xff0c;cygwin下的gcc和linux下的gcc使用的是相同的T…

JavaScript服務器端開發技術(對象屬性的枚舉與查詢)

既然對象是屬性的集合&#xff0c;那么檢測與枚舉集合中的屬性就是一項重要任務。對此&#xff0c;我們來分別看一下ES3和ES5提供的解決方案。 1) ES3枚舉方案 示例代碼&#xff1a; var contacts{ ID:[0,1,2,3,4,5], names:["Zero","One","Two&q…