`

把一个long型阿拉伯数字转换成中文数字(原创)

J# 
阅读更多

刚申请的博客,写几个小程序练练手,也正好充一下门面,呵呵,欢迎指正

package com.drug.test;

public class NumUtil {

    public static String num2Chinese(long num) {
        StringBuilder s = new StringBuilder();
        // 输出long类型的最小值
        if (num == Long.MIN_VALUE)
            return "负玖佰贰拾贰京叁仟叁佰柒拾贰兆零叁佰陆拾捌亿伍仟肆佰柒拾柒万伍仟捌佰零捌";
        // 处理负值
        if (num < 0) {
            s.append("负");
            num = -num;
        }
        // 把数字强行转换成字符串
        String num_str = num + "";
        String unit = "万亿兆京";
        // 对多余部分进行单独转换
        int num_l = num_str.length();
        int uint_i = (num_l - 1) / 4;
        if (num_l % 4 != 0) {
            s.append(num2C(num_str.substring(0, num_l % 4)));
            if (uint_i > 0)
                s.append(unit.charAt(--uint_i));
            num_str = num_str.substring(num_l % 4);
        }
        // 对数字进行切分,每4个一组进行转换
        for (int i = 0; i < num_str.length(); i = i + 4) {
            String subNum = num2C(num_str.substring(i, i + 4));
            s.append(subNum);
            uint_i--;
            if (uint_i > -1 && !(subNum == null || subNum.length() == 0))
                s.append(unit.charAt(uint_i));
        }
        return s.toString();
    }

    // 进行万以内的转换,
    private static String num2C(String num) {
        String num_cn = "零壹贰叁肆伍陆柒捌玖";
        StringBuilder s = new StringBuilder();
        // 是否舍弃零
        boolean isDrop = true;
        for (int i = num.length() - 1, k = 0; i > -1; i--, k++) {
            int j = num.charAt(i) - 48;
            if (j == 0) {
                if (isDrop)
                    continue;
                else {
                    s.append(num_cn.charAt(j));
                    isDrop = true;
                }
            } else {
                if (k == 1)
                    s.append("拾");
                else if (k == 2)
                    s.append("佰");
                else if (k == 3)
                    s.append("仟");
                s.append(num_cn.charAt(j));
                isDrop = false;
            }
        }
        // 字符串反转并返回
        return s.reverse().toString();
    }

    public static void main(String[] args) {
        long l = 10000000001l;
        System.out.println(l);
        System.out.println(num2Chinese(l));
    }
}

 

0
0
分享到:
评论

相关推荐

    中文数字转化成阿拉伯数字

    中文数字包括个、十、百、千、万、亿等单位,每个单位对应阿拉伯数字的一个或几个位数。例如,“一”对应“1”,“二”对应“2”,“三”对应“3”,“十”对应“10”,“百”对应“100”,以此类推。在转化过程中,...

    阿拉伯数字转中文数字(vb)

    在VB中,我们可以创建一个自定义函数,例如`ArabicToChinese(num As Long) As String`,该函数接受一个Long类型的参数`num`,代表阿拉伯数字,返回值是一个字符串,即转换后的中文数字。 转换过程中,我们首先需要...

    一个long型与Date型时间转换工具

    这个“一个long型与Date型时间转换工具”正是为了简化这类操作而设计的。Long类型在Java中通常用来存储时间戳,即从1970年1月1日(UTC)开始到现在的毫秒数。Date对象则用于表示特定的瞬间,精确到毫秒。转换工具的...

    date与long型转换工具

    "date与long型转换工具"是一个实用的小程序,它能够帮助开发者方便地在Date对象和long类型的毫秒值之间进行转换。这种转换在处理时间戳或者存储和检索时间数据时非常有用。 1. **Date类**:Java中的`java.util.Date...

    返回Long型UUid

    最后,我们使用`Long.parseLong()`方法将这个16进制字符串转换为Long类型,从而得到一个16位的纯数字Long型UUID。 这个工具类的使用非常简单,例如: ```java public class Main { public static void main...

    java 阿拉伯数字转化中文大写

    根据提供的文件信息,可以看出这是一个Java程序,用于将阿拉伯数字转换为中文大写形式,并且能够处理包含小数点的情况。接下来我们将对这个程序的关键部分进行详细的解析与解释。 ### 核心知识点概述 1. **数据...

    日期跟long转换小工具

    总的来说,日期与long型之间的转换在编程中至关重要,而"日期跟long转换小工具"则提供了一个直观、易用的解决方案,使开发者和普通用户都能轻松地处理日期时间相关的任务。无论是用于数据处理、日志分析还是简单的...

    pb_函数_将小写数字转换成大写数字

    本文档介绍了一个PB(PowerBuilder)函数,该函数用于将阿拉伯数字(小写数字)转换为中文大写数字。此功能在财务、银行以及其他需要精确且正式表示金额的场景中非常有用。该函数支持从个位数到千万亿级别的数字转换...

    Long类型转换为科学计数法

    将Long类型数据转换为科学计数法,使用的原生的写法,无需任何工具插件,编写环境支持JDK7/8及以上

    时间long型和现实时间转换

    在这个例子中,我们创建了一个`SimpleDateFormat`对象,定义了日期时间的格式(例如"年-月-日 时:分:秒"),然后将long型时间戳转换为`Date`对象,最后通过`format`方法将其格式化为字符串。 2. 使用`java.time`包...

    vb 数字转换为英文字母

    在VB(Visual Basic)编程语言中,将数字转换为英文表达是一种常见的需求,尤其是在处理财务报表、发票或者需要用户友好的数字表示时。这个算法主要涉及到数字与英文单词的映射,以及处理不同数量级(个位、十位、...

    long型转换为int型-kaic

    在Java编程语言中,数据类型转换是...在这个场景中,`queryForScalar()`方法返回的是一个`long`值,通过将它转换为字符串,然后再解析为`Integer`,可以确保在数值过大时能捕获到异常,从而避免潜在的数据丢失问题。

    Android/java的long类型时间戳,转换成时间格式工具类

    Android/java的long类型时间戳,转换成时间格式的工具类

    数字转换成大写字母代码

    根据给定的信息,本文将对“数字转换成大写字母代码”的实现原理及代码细节进行深入解析,旨在帮助初学者理解这一有趣而实用的技术。 ### 一、代码功能概述 该程序的主要目的是将输入的浮点数转换为一系列特定的...

    数制转换, 将一个十进制整数m转换成 →r(2-16)进制字符串,VB6.0源代码编写

    本文将深入探讨如何将一个十进制整数m转换成2至16进制的字符串,重点使用VB6.0(Visual Basic 6.0)编程语言进行源代码编写。VB6.0是微软公司开发的一款面向对象的可视化编程工具,它提供了丰富的控件和函数库,使得...

    人民币大小写转换 vs2008 vc long型

    程序的目标是能够将一个`long`类型的数值转换为相应的中文大写形式,并且该数值的长度不超过`long`类型所能表示的最大长度。 #### 二、关键技术点与实现思路 1. **字符串处理**:在C++中,字符串处理是实现此类功能...

    c语言字符串_数字转换函数大全

    同时,为了输出或显示,可能需要将数字转换为字符串。在使用这些函数时,需要注意检查转换是否成功,以及处理可能出现的错误,例如无效的输入或溢出问题。 以下是一些示例代码片段,演示了如何使用这些函数: ```c...

    TimeUtil_java-long型与Date型时间转换工具

    总的来说,`TimeUtil_java-long型与Date型时间转换工具`这个压缩包很可能包含了一个方便的工具类,用于在`long`类型和`Date`类型之间进行转换,并提供了日期相关的辅助方法。在实际开发中,这样的工具类可以极大地...

    解决时间戳long转换int溢出(即转换值为负数) long转int

    `System.currentTimeMillis()` 方法返回的就是这样的一个long类型的数值。然而,当你需要将这个long类型的时间戳转换为int类型时,可能会遇到数据溢出的问题,因为int类型的存储空间只有32位(4个字节),而long类型...

    java中long类型转换为int类型-java long转int.pdf

    从 `int` 转换为 `long` 是一个安全的“向上”转换,因为 `long` 可以容纳所有 `int` 的值。这种转换不需要任何额外的操作,可以直接通过隐式转换完成。例如: ```java int i = 100; long l = i; // 隐式转换 `...

Global site tag (gtag.js) - Google Analytics