数字转汉字支持负数和小数

news2024/12/28 22:47:37

private static String numToChinese(String str) {

if(str==null)

return null;

boolean isPositive=true;

//判断是不是负数

if(str.charAt(0)=='-')

isPositive=false;

StringBuffer sb=new StringBuffer();

if(!isPositive)

sb.append("负");

//整数部分和小数部分(如果有)隔开

String input[]=str.split("\\.");

String IntegerPart=isPositive?input[0]:input[0].substring(1);

String[] s1 = { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };

String[] s2 = { "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千", "兆", "十", "百", "千"};

int n = IntegerPart.length();

for (int i = 0; i < n; i++) {

int num = IntegerPart.charAt(i) - '0';

if(i == n - 1 && num!=0){

sb.append(s1[num]).toString();

break;

}

if(i != n - 1 && num!=0){

sb.append(s1[num] + s2[n - 2 - i]);

}else{

//如果有连续的两个零,只加一个零;如果num不是0,也加上去

if(sb.charAt(sb.length()-1)!='零' || num!=0){

sb.append(s1[num]);

}

}

//处理特殊情况,如果在每个亿、万的部分末尾有零

// 例如14001400,不应该是一千四百零一千四百零,而是一千四百万一千四百

if(sb.charAt(sb.length()-1)=='零' &&

(n-2-i==-1 || s2[n-2-i].equals("万") || s2[n-2-i].equals("亿"))){

sb.deleteCharAt(sb.length()-1);

//如果不是遍历到字符串最后,就加上对应的万或者亿

if(n-2-i!=-1){

sb.append(s2[n-2-i]);

}

}

// System.out.println(sb);

}

//如果还有小数部分

if(input.length>1){

sb.append("点");

for(int i=0;i<input[1].length();i++){

int num = input[1].charAt(i) - '0';

sb.append(s1[num]);

}

}

if(sb.length() > 2){

if(sb.length() == 2 || sb.length() == 3){

return sb.toString().replace("一十", "十").toString();

}else {

return sb.toString().substring(0, 2).replace("一十", "十")+ sb.toString().substring(2, sb.length());

}

}else{

return sb.toString();

}

}

public static void main(String[] args){

System.out.println("toChinese:"+numToChinese("-19001212.1212"));

}

输出:

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

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

相关文章

2023年1月实时获取地图边界数据方法,省市区县多级联动【附区县乡镇街道geoJson文件下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

QT 学习笔记(十三)

文章目录一、QDataStream 二进制文件读写1. QDataStream 简介2. QDataStream 实际演示2.1 QDataStream 读写文件操作2.2 实现代码——主窗口头文件 widget.h2.3 实现代码——主窗口源文件 widget.cpp二、QTextStream 文本文件读写1. QTextStream 简介2. QTextStream 实际演示2.…

【王道操作系统】3.2.3 页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)

页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法) 文章目录页面置换算法(最佳置换算法、先进先出置换算法、最近最久未使用置换算法、普通时钟置换算法、改造型时钟置换算法)1.最佳置换算法---OPT2.先进先出置换算…

[安洵杯 2019]不是文件上传(文件名不能用“,数据库可识别hex编码)

打开题目尝试上传文件发现只能上传图片&#xff0c;然后看见了图片的路径&#xff0c;但是图片码连不上蚁键&#xff0c;结合题目&#xff0c;然后看到了题目给出的github源码 <?php include("./helper.php"); $show new show(); if($_GET["delete_all&qu…

STS安装,SVN配置及WEB工程配置简单说明_1.0.0

Spring Tool Suite构建java web项目概述1, 下载安装Spring Tool Suite Spring Tool Suite 简称为sts, 为构建基于Spring企业应用&#xff0c;提供了最好的Eclipse开发环境。STS 提供了最新基于Java和Spring应用所需要的所有工具,STS官网主页地址为http://spring.io/tools/sts/,…

画布创作,签名大致就是起笔落笔

画布创作&#xff0c;签名大致就是起笔落笔 前言 在画布创作过程中&#xff0c;签名手的基本形态是&#xff0c;不停的点、划。 就像我们写字一样&#xff0c;字越写越大&#xff0c;但是我们不知道笔画的大小。 一个字是一个非常小的点、横&#xff0c;一个横就把这个字给分…

JVM学习(一):简单聊聊性能调优这门艺术

一、性能调优背景说明1.1 生产环境中的问题生产环境发生了内存溢出该如何处理&#xff1f;生产环境应该给服务器分配多少内存合适&#xff1f;如何对垃圾回收器的性能进行调优&#xff1f;生产环境CPU负载飙高该如何处理&#xff1f;生产环境应该给应用分配多少线程合适&#x…

2-2进程管理-处理机调度

文章目录一.调度的层次二.进程调度的时机、切换与过程、调度方式三.调度器、闲逛进程四.调度算法的评价指标五.调度算法&#xff08;一&#xff09;先来先服务SCFS&#xff08;二&#xff09;短作业优先算法SJF&#xff08;三&#xff09;高响应比优先HRRN&#xff08;四&#…

cas6.6关于redis连接问题的一次记录,主要问题 1远程主机强迫关闭了一个现有的连接,主要问题2ERR unknown command `HELLO`

项目背景&#xff1a; 公司要求用cas单点登录&#xff0c;这个cas需要引入redis当做ticket缓存&#xff0c;但是出现连接不上的问题由于用redismanager可视化软件看了是可以连接的&#xff0c;进行了查询是redis配置文件中需要配置参数问题截图如下 问题输出如下 2023-01-04…

192:vue+openlayers: 选择feature,弹窗操作,删除所选feature

第192个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中使用select来选择feature元素,选择的过程中弹窗出现删除和关闭按钮,删除的内容是selected的feature,关闭的是功能浮窗。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果Ope…

《设计模式》模板方法模式

《设计模式》模板方法模式定义&#xff1a; 模板方法模式又叫模板模式&#xff0c;在一个抽象类中公开定义了执行它的方法的模板&#xff0c;子类可以根据需要重写方法实现&#xff0c;但是调用将按照抽象类中定义的方式进行。模板方法模式相当于定义了一个操作中算法的骨架&a…

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出

回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出 目录回归预测 | MATLAB实现CNN-GRU卷积门控循环单元多输入多输出预测效果基本介绍程序设计往期精彩参考资料预测效果 基本介绍 MATLAB实现CNN-GRU卷积门控循环单元多输入多输出&#xff0c;运行环境Matlab2020及以上…

【国科大模式识别】第三次作业

【题目一】现有四个来自于两个类别的二维空间中的样本, 其中第一类的两个样本为 (1,4)T(1,4)^T(1,4)T 和 (2,3)T(2,3)^T(2,3)T, 第二类的两个样本为 (4,1)T(4,1)^T(4,1)T 和 (3,2)T(3,2)^T(3,2)T 。这里, 上标 TTT 表示向量转置。若采用规范化增广样本表示形式, 并假设初始的权…

权限问题的理解——Linux

这里是目录标题一、重定向二、 学Linux的意义三、shell命令的运行原理四、Linux权限管理1.Linux中具体用户的分类五、Linux文件相关的权限概念文件类型文件的权限文件的权限操作去掉权限加上权限八进制文件权限操作更改文件的拥有者和所属组六、目录的权限七、默认权限权限掩码…

树莓派项目归档

Flask Flask登录注册界面美化 Flask 修改路由 Flask 创建404json返回 返回虚拟温湿度 Flask-移植开发环境到VSCode-手机局域网访问测试 Flask AJAX 获取数据 Flask 将项目从win部署到树莓派 添加监控窗口 Flask 编写shell脚本快速启动服务 树莓派 树莓派4B Ubuntu MAT…

leetcode螺旋矩阵总结

螺旋矩阵题目&#xff1a; leetcode54&#xff0c;59&#xff0c;885&#xff0c;2326 leetcode54 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出&#xff1a;[…

MSTP技术中引入的必要性

目前&#xff0c;城域光传送网大量存在的是传统的SONET/SDH环网和简单的MSTP网络&#xff0c;对带宽的指配基本上是静态的&#xff0c;无法适应大量的突发性数据业务&#xff0c;需要大量的人工操作和维护&#xff0c;耗时耗力、容易出错。为了改变现状&#xff0c;人们不断在传…

第二章 Flink 环境部署

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、Flink架构 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源…

python-turtle画图

认识TurtleTurtle是一个渲染器基于底层图形编程结构(API)构建&#xff0c;主要用于场景的构建以及3D物体的绘制(3D游戏、虚拟场景等)Turtle是一个窗体程序Turtle是Python语言中的一个很流行的绘制图像的函数库&#xff0c;想象一个小海龟在一个横轴为x&#xff0c;纵轴为y的坐标…

时序数据库 TDengine 携手北京科技大学设计研究院,助力冶金工业智慧化

北京科技大学设计研究院有限公司作为北京科技大学全资产业化技术推广机构&#xff0c;从 2013 年开始在冶金、钢铁行业进行业务系统开发和实施&#xff0c;围绕先进材料、绿色低碳和智能制造不断深耕细作&#xff0c;持续创新。其拥有高效轧制与智能制造国家工程研究中心、国家…