金额转换

BigDecimal金额的转换 支付金额一般使用BigDecimal类,涉及元转分,分转元的问题 代码如下: import java.math.BigDecimal; import com.taobao.util.Money; /** * 金额转换工具类 * * @author wangxian * @since 2016-01-02 */ public class MoneyUtils { /** *... 阅读详情
  1. public class Money {
  2.   private static final String[] NUMBERS = { "零", "壹", "贰", "叁", "肆", "伍", "陆","柒", "捌", "玖" };
  3.   private static  final String[] IUNIT = { "元", "拾", "佰", "仟", "万", "拾", "佰","仟", "亿", "拾", "佰", "仟"};//最大到千亿
  4.   private static final String[] DUNIT = { "角", "分"};
  5.   public static String toChinese(String str) {
  6.     String integerStr;// 整数部分数字
  7.     String decimalStr;// 小数部分数字
  8.     if (str.indexOf(".") > 0) {
  9.       integerStr = str.substring(0, str.indexOf(".")); //得到整数部分
  10.       decimalStr = str.substring(str.indexOf(".") + 1);//得到小数部分
  11.     } 
  12.     else if (str.indexOf(".") == 0) {
  13.       integerStr = "";
  14.       decimalStr = str.substring(1);
  15.     }
  16.     else {
  17.       integerStr = str;
  18.       decimalStr = "";
  19.     }
  20.     
  21.     if (!integerStr.equals("")) {
  22.       integerStr = Long.toString(Long.parseLong(integerStr));
  23.       if (integerStr.equals("0")) {
  24.         integerStr = "";
  25.       }
  26.       
  27.     }
  28.     
  29.     int[] integers = toArray(integerStr); // 整数部分数字
  30.     boolean isWan = isWan(integerStr);// 设置万单位
  31.     int[] decimals = toArray(decimalStr); // 小数部分数字
  32.     return getChineseInteger(integers, isWan) + getChineseDecimal(decimals);
  33.   }
  34.   
  35.  // 整数部分和小数部分转换为数组,从高位至低位
  36.   private static int[] toArray(String number) {
  37.     int[] array = new int[number.length()];
  38.     for (int i = 0; i < number.length(); i++) {
  39.       array[i] = Integer.parseInt(number.substring(i, i + 1));
  40.     }
  41.     return array;
  42.   }
  43.   
  44. //得到中文金额的整数部分。
  45.   private static String getChineseInteger(int[] integers, boolean isWan) {
  46.     StringBuffer chineseInteger = new StringBuffer("");
  47.     int length = integers.length;
  48.     for (int i = 0; i < length; i++) {
  49.       String key = "";
  50.       if (integers[i] == 0) {
  51.         if ((length - i) == 13)
  52.           key = IUNIT[4];
  53.         else if ((length - i) == 9)
  54.           key = IUNIT[8];
  55.         else if ((length - i) == 5 && isWan)
  56.           key = IUNIT[4];
  57.         else if ((length - i) == 1)
  58.           key = IUNIT[0];
  59.         if ((length - i) > 1 && integers[i + 1] != 0)
  60.           key += NUMBERS[0];
  61.       }
  62.       chineseInteger.append(integers[i] == 0 ? key
  63.           : (NUMBERS[integers[i]] + IUNIT[length - i - 1]));
  64.     }
  65.     return chineseInteger.toString();
  66.   }
  67.   
  68.  //得到中文金额的小数部分。
  69.  private static String getChineseDecimal(int[] decimals) {
  70.     StringBuffer chineseDecimal = new StringBuffer("");
  71.     for (int i = 0; i < decimals.length; i++) {
  72.        if (i == 2)
  73.         break;
  74.       chineseDecimal.append(decimals[i] == 0 ? ""
  75.           : (NUMBERS[decimals[i]] + DUNIT[i]));
  76.     }
  77.     
  78.   chineseDecimal.toString();
  79.   if(decimals.length==0)//确定"整"的添加情况
  80.      chineseDecimal.append("整");
  81.        else if(decimals.length==1)
  82.           chineseDecimal.append("整");
  83.             else if(decimals.length==2){
  84.                 if(decimals[0]==0&&decimals[1]==0||decimals[0]!=0&&decimals[1]==0)
  85.                    chineseDecimal.append("整");
  86.               }
  87.    return chineseDecimal.toString();
  88.  }
  89.   
  90. //判断第5位数字的单位"万"是否应加。
  91.   private static boolean isWan(String integerStr) {
  92.     int length = integerStr.length();
  93.     if (length > 4) {
  94.       String subInteger = "";
  95.       if (length > 8) {
  96.         subInteger = integerStr.substring(length - 8, length - 4);
  97.       } 
  98.       else {
  99.         subInteger = integerStr.substring(0, length - 4);
  100.       }
  101.       return Integer.parseInt(subInteger) > 0;
  102.      } 
  103.      else {
  104.       return false;
  105.     }
  106.   }
  107.   public static void main(String[] args) {
  108.     System.out.println("金额转换(最大到千亿,最小到分)");
  109.     String number = "5.00";
  110.     System.out.println(number + " " + Money.toChinese(number));
  111.     number = "123456789123.1";
  112.     System.out.println(number + " " + Money.toChinese(number));
  113.     number = "0.07";
  114.     System.out.println(number + " " + Money.toChinese(number));
  115.     number = "1.90";
  116.     System.out.println(number + " " + Money.toChinese(number));
  117.     number = "1.00";
  118.     System.out.println(number + " " + Money.toChinese(number));
  119.   }
  120. }
VC++将编辑框中输入的字符转换为大写(小写) 摘要:VC/C++源码,字符处理,字符转换,大小写转换   VC++将窗体编辑框中输入的字符转换为大写(小写),大小写转换,自动将输入到文本框中的字条转换成大写,当然,如果在源码里设置一下,就可以变成自动转换成小写。 立即下载

相关推荐

VC++金额大小写转换实用源码

VC++金额大小写转换实用源码 VC++金额大小写转换实用源码,在数字框中任意输入数字 ,己把它做成了一个CnumToHan类,使用方法在示范程序中。运行程序后,在下边的文本框中会适时转换出对应的中文大小汉字,如上图例,学习VC的可参考一下,这是一个数组与字符结合的综合实例。

第八周 项目二--Time类中的运算符重载

问题及代码: /* *Copyright (c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:test.cpp *作者:吴胜男 *完成日期:2015年04月29日 *版本号:v1.0 * *问题描述:实现Time类中的运算符重载。 *提示1:并不是所有比较运算重载函数都很复杂 //比较运算返回的是比较结果,是bool型的true或fa

ytdxwushengnan的专栏 482

Python+Vue计算机毕业设计风电场监控系统的设计与实现7bd6i(程序+LW+源码+部署)

Python3.7.7+Django+Mysql5.7+pip list+HBuilderX(Vscode也行)+Vue+Pychram社区版。2. 前端:vue+css+javascript+jQuery+easyUI+highcharts。2.IDE环境:Python和Python 社区版都可以。Django + Vue +Python+Mysql 等等组成,B/S模式等等。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。1. 后端:Python、Vue、Django、Mysql。

华信计算机毕设源码程序 341

小写数字转换为中文大写的最完整C#方案

using System;using System.Text.RegularExpressions;namespace bobomousecom.crm{ ///  /// Regexlib 的摘要说明。 ///  public class Regexlib {  public Regexlib()  {   //   // TODO: 在此处添加构造函数逻辑   //  }  //搜

流男@水孩 2103

DySAT+: Enhancing Dynamic Graph Representation Learning with Multi-Head Self-Attention and Temporal-

本文深入探讨了DySAT+模型在动态图表示学习中的创新应用,通过多头时空注意力机制和层级信息融合策略,有效解决了动态图数据中的时间维度信息捕捉和结构演变动态适应问题。该模型在社交网络异常检测和金融交易网络分析等场景中表现出色,显著提升了预测准确率和响应速度。

weixin_29035405的博客 335

MATLAB实战:64QAM通信系统仿真全流程解析(附误码率优化技巧)

本文提供了一份完整的64QAM通信系统MATLAB仿真实践指南。从系统架构设计、发射端格雷码映射与脉冲成形,到信道建模、接收端同步与均衡,详细解析了全链路实现流程。文章重点分享了误码率曲线与理论值偏差的排查清单和深度优化技巧,帮助工程师构建工业级精度的仿真模型,解决高阶调制系统仿真的核心难题。

jenkins8butler的博客 404

Java 金额转换 阿拉伯数字金额转换成汉字大写金额

Java 金额转换 阿拉伯数字金额转换成汉字大写金额 写的不是很完善,仅供参考!还望各大佬多多指点!下面直接上代码: package demo; import java.math.BigDecimal; import java.util.Scanner; public class MoneyToCN2 { private static final String CNSUM[] = {...

weixin_43544711的博客 2409

nbiot和2g_浅谈NBIOT

一、什么是NBIOT?1、概念窄带物联网(Narrow Band Internet of Things, NB-IoT),NB-IoT构建于蜂窝网络,只消耗大约180KHz的带宽,使用License频段,可采取带内、保护带或独立载波等三种部署方式,与现有网络共存。可直接部署于GSM网络、UMTS网络或LTE网络,以降低部署成本、实现平滑升级。2、NBIOT的特点和目标(1)超强覆盖:相对GPRS来...

weixin_39534100的博客 1704

小写金额转换为大写金额

jsp:useBean指令 创建名为StringUtil的JavaBean类 package com.cn.zj.bean; public class StringUtil { private String money; //转换之前的数字金额 private String submoneyCN[]={&quot;&quot;,&quot;拾&quot;,&quot;佰&quot;,&quot;仟&quot;};

you can you up up up的博客 2535

[学习笔记]Esp32 + 4G模块,随身wifi,ppp拨号上网

Esp32S3 + 4G模块制作随身WIFI教程

weixin_45595548的博客 7415

UE4-(IK)实现人物脚贴合地面解决斜坡上脚无旋转无法贴合地面问题

在斜面上脚陷入模型中,需要设置旋转值对脚的骨骼进行一个旋转。 解决思路:在射线检测中可以获取到检测点的法线方向,根据法线方向来计算出脚应该向哪个方向进行适当的旋转,在斜坡上,人物脚需要旋转的轴为x轴和y轴以便来贴合地面,z轴方向的旋转是不需要进行修改的。 如图所示,我们需要求得水平面与斜坡的夹角用来得出人物在x轴上的脚旋转量,在蓝图中提供反正切函数,反正切 = 锐角的邻边/对边 所以 反正切值(脚x轴值(roll)) = 法线Y轴值/法线Z轴 值。 现在将上图的人物想象成面向屏幕,脚需...

Stone的博客 3317

JAVA金额转换

本文仅仅简单介绍了怎么解决转换金额问题。

weixin_68609410的博客 1856

Matlab:imageDatastore() 高效读取图像数据集的实战技巧

本文详细介绍了Matlab中imageDatastore()函数的高效使用技巧,帮助用户从繁琐的手动读取图像数据集中解放出来。通过核心语法、关键参数(如IncludeSubfolders、LabelSource、ReadSize)的解析,以及数据集分割、打乱等进阶实战操作,指导读者构建稳定、高效的图像数据读取管道,特别适用于大型图像数据集处理和机器学习项目。

hill8的博客 1100

【简单易懂】Java字符串应用场景:数字金额转换成大写汉字金额【金额转换】

Java字符串应用场景之一,数字金额转换成大写的汉字金额,常用于数据或转账的显示,防止数字金额过于简单而被篡改

Q20011102的博客 5056

Qt Quick (QML) 老年人健康管理

通过 **Qt SQL** 模块将所有健康数据(用药记录、体检数据等)安全地存储在本地 **SQLite** 数据库中。你想用 **Qt C++** 结合 **Qt Quick** (QML) 来开发一个老年人健康管理软件,主要功能包含 **用药提醒** 和 **健康记录** (使用 `Qt SQL` 存储数据)。* **UI 框架**: Qt Quick (QML) - 用于构建流畅、动态的用户界面。**数据模型类 (models/MedicationReminder.h / .cpp)**

寒寒豆豆软件公司的博客 193

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

将数值金额转换为中文大写金额

/** * 将数值金额转换为中文大写金额 * @param $amount float 金额(支持到分) * @param $type int 补整类型,0:到角补整;1:到元补整 * @return mixed 中文大写金额 */ function convertAmountToCn($amount, $type = 1) { // 判断输出的金额是否为数字或数字字...

峰 852

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大写金额转换(报销大写金额转换)

10240大写金额怎么?10240大写金额怎么写 壹萬零贰佰肆拾。 Excel数字小写金额转换汉字大写金额公式的设置方式是什么?   公式如下:   =IF(ROUND(A1,2)=0,"",IF(A1=1,TEXT(INT(ROUND(ABS(A1),2)),"[dbnum2]")&"元","")&...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 930

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

小写金额转换成大写金额

 /************************************************************************************************** Name : Fun_GetRMB Descr : 大写金额转换 Params : @Num 金额小写 Returns: 转换后大写金额 Examp : SELECT dbo.Fun_GetRMB(123456666666.67) *********************

yuchen_0515的专栏 1122

数字金额转换汉字金额

 // 数字金额转换汉字金额 function atoc(numberValue){    var numberValue=new String(Math.round(numberValue*100)); // 数字金额  var chineseValue="";          // 转换后的汉字金额  var String1 = "零壹贰叁肆伍陆柒捌玖";       // 汉字数字  va

hackergoogle的专栏 959

小写金额转换为大写金额(vb2010)

'-------------------------------------------------------------     '功能:小写金额转换为大写金额     '参数:     '返回:大写金额     '     "0":整数位数超过9位     '     "1":小数位数超过2位     '     "零":num为0     '方法:text1.text=num

sitongqdl的专栏 2151

金额转换java_java金额转换

像商品价格,订单,结算都会涉及到一些金额的问题,为了避免精度丢失通常会做一些处理,常规的系统中金额一般精确到小数点后两位,也就是分;这样数据库在设计的时候金额就直接存储整型数据类型,前端可以将金额X100以分为单位传给后端,后端进行一系列逻辑处理后要以元为单位返回前端直接展示,这时候就可以定义一个简单的处理工具来转换:public class MoneyConvert {//分转换为元,返回str...

weixin_35975177的博客 791

将金额数字转换为汉字大写金额

DATA: I_INPUT  TYPE  BSEG-DMBTR , "金额数字          O_OUTPUT) TYPE  STRING.        “金额汉字   DATA:          V_S00(2) VALUE '零',          V_S01(2) VALUE '壹',          V_S02(2) VALUE '贰',          V_S0

心丨悦 的专栏 1381

金额转换算法

金额转换算法 在我们日常开发过程中,在和金额相关的业务打交道的时候经常需要把阿拉伯数字金额装换为大写的金额(例如:壹佰圆整)。本人最经也正好也有这个需求,故整理了一个简单的转换算法。 /** * 金额转为大写金额工具类 * * @date: 2020/12/2 09:08 */ public class MoneyChangeUtil { private static final String digit_single = "零壹贰叁肆伍陆柒捌玖"; private stati

陈Sir的博客 818

vue 小写金额转换为大写金额

vue中小写金额转换为大写金额

aiiiszrh的博客 1975

金额转换,把金额转换成为汉字大写金额!

namespace BaseSystemFramework{    using System;    public class Capitalization    {        public Capitalization()        {        }        //金额数字(小写)转换成文字(大写)         private static string[] shuzi={"

yqgzs的专栏 610
上一篇: 整型变量与字节数组的相互转换
下一篇: 排序方法小结(c++版)
oopDesigner
博客等级 码龄18年 36粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值