java实现 阿拉伯数字转换为汉字数字 算法

package test;


public class NumberFormatTest {


static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿",
"十亿", "百亿", "千亿", "万亿" };
static char[] numArray = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };


/**
* @param args
*/
public static void main(String[] args) {
int num = 245000006;
String numStr = foematInteger(num);
print("num= " + num + ", convert result: " + numStr);
double decimal = 245006.234206;
print("============================================================");
String decStr = formatDecimal(decimal);
print("decimal= " + decimal + ", decStr: " + decStr);
}


private static String foematInteger(int num) {
char[] val = String.valueOf(num).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
String m = val[i] + "";
int n = Integer.valueOf(m);
boolean isZero = n == 0;
String unit = units[(len - 1) - i];
if (isZero) {
if ('0' == val[i - 1]) {
// not need process if the last digital bits is 0
continue;
} else {
// no unit for 0
sb.append(numArray[n]);
}
} else {
sb.append(numArray[n]);
sb.append(unit);
}
}
return sb.toString();
}


private static String formatDecimal(double decimal) {
String decimals = String.valueOf(decimal);
int decIndex = decimals.indexOf(".");
int integ = Integer.valueOf(decimals.substring(0, decIndex));
int dec = Integer.valueOf(decimals.substring(decIndex + 1));
String result = foematInteger(integ) + "." + formatFractionalPart(dec);
return result;
}


private static String formatFractionalPart(int decimal) {
char[] val = String.valueOf(decimal).toCharArray();
int len = val.length;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len; i++) {
int n = Integer.valueOf(val[i] + "");
sb.append(numArray[n]);
}
return sb.toString();
}


private static void print(Object arg0) {
System.out.println(arg0);
}
}

转载于:https://www.cnblogs.com/Free-Thinker/p/4374700.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解|清华大学100页PPT:工业机器人技术详解

来源&#xff1a;清华大学未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#…

2019年,中国要推进这70个工程项目

来源&#xff1a;人民日报客户端摘要&#xff1a;近日&#xff0c;《关于2018年国民经济和社会发展计划执行情况与2019年国民经济和社会发展计划草案的报告》正式发布。报告详尽地对2019年我国经济社会的发展做出了安排。围绕基础设施建设、创新发展、社会民生、生态治理、文化…

判断101-200之间有多少个素数,并输出所有素数。

1、代码如下&#xff1a; // test.cpp : Defines the entry point for the console application. // /* 判断101-200之间有多少个素数&#xff0c;并输出所有素数。*/ #include "stdafx.h" #include <iostream> #include <cmath> using namespace std;in…

Matlab diag的用法

X diag(v,k) 以向量v的元素作为矩阵X的第k条对角线元素,当k0时,v为X的主对角线&#xff1b;当k>0时,v为上方第k条对角线 几个例子&#xff1a; 当k> v[1 2 3]; >> xdiag(v,-1) x 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 v[1]; xdiag(v,0) x 1 0 0 0 0 1 0 0 0 0 1 0 0 …

输入一个十进制数,转化为二进制

1、代码如下&#xff1a; // test.cpp : Defines the entry point for the console application. // /* 输入一个十进制数&#xff0c;转化为二进制。*/ #include "stdafx.h" #include <iostream> using namespace std;int main(int argc, char* argv[]) {cout…

超越“机器人三定律” 人工智能期待新伦理

来源&#xff1a;新华网人工智能的伦理原则近来备受关注。联合国教科文组织总干事阿祖莱在3月初举行的“推动人性化人工智能全球会议”上就表示&#xff0c;目前还没有适用于所有人工智能开发和应用的国际伦理规范框架。对于科幻作家阿西莫夫上世纪设计、防止机器人失控的著名“…

volatile关键字及编译器指令乱序总结

本文简单介绍volatile关键字的使用&#xff0c;进而引出编译期间内存乱序的问题&#xff0c;并介绍了有效防止编译器内存乱序所带来的问题的解决方法&#xff0c;文中简单提了下CPU指令乱序的现象&#xff0c;但并没有深入讨论。 以下是我搭建的博客地址&#xff1a; http…

求5阶矩阵其对角线上所有元素之和

1、代码如下&#xff1a; // test.cpp : Defines the entry point for the console application. // /* 输入一个5*5的矩阵&#xff0c;然后输出其对角线上所有元素之和。 当求N阶矩阵其对角线上所有元素之和时&#xff0c;只要把以下程序中所有的5改成N,4改成N-1即可。*/ #inc…

DARPA“终身学习机器”项目取得重大进展

来源&#xff1a;DARPA网站2019年3月&#xff0c;美国防高级研究计划局&#xff08;DARPA&#xff09;“终身学习机器”&#xff08;L2M&#xff09;项目研究人员在《自然机器智能》杂志发表了其有关人工智能算法的研究结果&#xff0c;介绍了一种由类似动物肌腱驱动的人工智能…

php内核一 一次请求与结束

php开始 到 结束 有两个阶段 请求开始之间的初始化阶段  请求之后的结束处理阶段开始阶段&#xff1a; 模块初始化 模块激活模块初始化&#xff1a; 在整个SAPI生命周期内&#xff0c;只执行一次&#xff08;apache服务器启动的整个声明周期内或者是命令…

运行Qt程序的一些注意事项

一、脱离开发环境运行Qt程序的话&#xff0c;会出现丢失动态链接库的现 象。解决办法有以下两种&#xff1a; 1、把提示丢失的链接库添加到相应的应用程序下即可。&#xff08;比较麻烦&#xff09; 2、把F:\QT\5.7\mingw53_32\bin添加到系统的环境变量中去。&#xff08;最简…

《自然》,工程学突破!仿生物细胞群体机器人问世

来源&#xff1a;科技日报摘要&#xff1a;北京3月20日&#xff0c;英国《自然》杂志20日发表了一项工程学最新突破&#xff1a;美国科学家团队研发了一种能模拟生物细胞集体迁移的机器人&#xff0c;可实现移动、搬运物体及向光刺激移动。北京3月20日&#xff0c;英国《自然》…

【原创】我所理解的自动更新-外网web服务器配置

ClientDownload和ClientUpdate共享渠道配置信息: channel-0.php //以appstore的渠道为例 1 <?php 2 define(APPNAME, TOKENAPPNAME);//应用版本号3 define(SERVER_MAJOR_VERSION, TOKENMAJORVER);//最新应用版本号4 define(SERVER_MAJOR_VERSION_TXT, TOKEN…

白宫启动AI.GOV计划,呼吁各界携手共同推进AI发展

来源&#xff1a;网络大数据摘要&#xff1a;近日&#xff0c;白宫启动了 ai.gov 计划&#xff0c;列出了特朗普政府与美国联邦机构采取的一系列人工智能举措&#xff0c;如美国国立卫生研究院(NIH)利用 AI 展开的生物医学研究项目以及美国交通部近期发布的关于自动驾驶汽车的报…

Qt连接MySQL数据库

1、将MySQL安装目录下的libmysql.dll拷贝到Qt安装目录下的bin目录中。 2、准备数据库和数据表如下&#xff1a; 3、编写如下代码&#xff1a; #------------------------------------------------- # # Project created by QtCreator 2016-07-15T17:56:50 # #----------------…

关于手机权限

adb shell cd进入手机/data目录总显示opendir failed&#xff0c;permission denied 可能的原因有两个 1.手机没有root2.adb不是最高权限启动 针对1&#xff0c;PC上下载了一个KingRoot&#xff0c;可以root基本上的常用的手机 2.adb shell 后 su命令即可以在最高权限下运行 ad…

边缘计算不再“边缘”

来源&#xff1a;中国科学报摘要&#xff1a;5G商用时代来临&#xff0c;数据量将更加巨大、复杂&#xff0c;对计算提出更高要求&#xff0c;同时也为发展人工智能、边缘计算带来了新机遇。5G商用时代来临&#xff0c;数据量将更加巨大、复杂&#xff0c;对计算提出更高要求&a…

Qt中修改应用程序和标题栏的图标

一、修改应用程序图标 1.新建一个my.txt文件&#xff0c;打开后在其中加一句 “IDI_ICON1 ICON DISCARDABLE "应用程 序图标.ico"”。&#xff08;“应用程序图标.ico”是要添加的图片名&#xff0c;图片格式一定要是.ico), 然后保存并退出&#xff0c;将文件格式改为…

iOS一次定位解决方案(基于高德iOS SDK)

部分LBS应用&#xff0c;在打开app时获取当前的准确位置就能满足要求&#xff0c;一直开着定位&#xff0c;不仅会浪费流量也费电&#xff0c;所以这里给大家推荐一个一次定位的解决方法。 步骤如下&#xff1a; 1.开启定位&#xff0c;请求获取位置信息。&#xff08;注意&…

人类“第六感”首次被证实,研究发现人脑具有磁场感应能力

新证据表明&#xff0c;人类磁感可以让大脑感应到地球磁场来源&#xff1a;神经科技摘要&#xff1a;科学界已经知道鸟类可以利用地磁场进行导航&#xff0c;除此之外&#xff0c;科学家在自然界许多物种中都发现了磁感应能力&#xff0c;生物的磁感受能力也一直在业内被称作生…