PowerBuilder -- 数字金额大写

//====================================================================
// 事件: .pub_fc_change_number()
//--------------------------------------------------------------------
// 描述: 数字转换成大写
//--------------------------------------------------------------------
// 参数:
//     decimal    number
//--------------------------------------------------------------------
// 返回:  string//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================
String cn_num[10] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"} //大写0-9
String cn_carry[19] = {"分","角","","元","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟","万","拾","佰","仟"} //单位
String ls_pos,ls_old,ls_number,ls_rc = ‘‘, ls_zero, ls_zero_unit
Integer li_i,li_len //循环变量
String ls_zf = ‘‘ //正负符号
String ls_value, ls_z
Boolean lb_zero_yuan
//参数格式化
If ade_number < 0 Then
    ls_zf = ‘负‘
    ade_number = (-1)*ade_number
End If
ls_number = String(ade_number,"0.00")
//参数的长度
li_len = Len(ls_number)
ls_zero = ‘‘
ls_zero_unit = ‘‘
lb_zero_yuan = False
ls_z = ‘‘
//转换为大写(发票格式),从右到左
For li_i = 1 To li_len
    ls_value = Mid(ls_number, li_len - li_i + 1, 1)
    If li_i = 1 And ls_value = ‘0‘ Then
        // 分 为0
        ls_z = ‘整‘
        Continue
    End If
    If li_i = 2 And ls_value = ‘0‘ And ls_z <> ‘整‘ Then
        // 角 为0, 分不为 0
        ls_rc = ‘零‘ + ls_rc
        Continue
    End If

    // 小数点
    If li_i = 3 Then Continue

    // 万与元,亿与万之间 存在 0
    If (li_i = 8 Or li_i = 12) And ls_zero = ‘零‘ Then
        ls_rc = ‘零‘ + ls_rc
        ls_zero = ‘‘
    End If

    // 元 万 亿 为0
    If li_len > 4 And (li_i = 4 Or li_i = 8 Or li_i = 12) And ls_value = ‘0‘ Then
        ls_rc = cn_carry[li_i] + ls_rc
        lb_zero_yuan = True
        Continue
    End If
    // 万与元,亿与万之间 存在 0
    If li_len > 5 And li_i > 4 And ls_value = ‘0‘ And ls_zero = ‘‘ And Not lb_zero_yuan Then
        ls_zero = ‘零‘
    End If

    If ls_value <> ‘0‘ Or li_i = 4 Then
        ls_rc = cn_num[1 + Mod(Integer(ls_value), 10)] + cn_carry[li_i] + ls_zero + ls_rc
        ls_zero = ‘‘
        lb_zero_yuan = False
    End If

Next

ls_rc = ls_zf + ls_rc + ls_z

Return ls_rc //返回结果  100100.11 100100100.11 10010100100.11
时间: 2024-10-25 21:58:03

PowerBuilder -- 数字金额大写的相关文章

数字金额大写和小写转换

有非常多时候打印凭据的时候须要实现金额大写.比如 有多种写法来实现 比如一下几种 CREATE OR REPLACE FUNCTION chinese_number_program(p_input FLOAT) RETURN VARCHAR2 AS TYPE typ_money IS TABLE OF VARCHAR2(20); c_numbers typ_money := typ_money('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');

将数字金额转成汉字大写的

/** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var head = n < 0? '欠': ''; n = Math.abs(n); var s =

JS数字金额转为大写金额

/** 数字金额大写转换(可以处理整数,小数,负数) */function smalltoBIG(n){var fraction = ['角', '分'];var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ];var head = n < 0? '欠': '';n = Math.abs(n); var s = ''; fo

BPM实例分享——金额规则大写

金额规则大写 在涉及金额的流程中经常会遇到需要大写金额数据与小写金额匹配,如何实现输入数字后自动转换呢? 初级用法: 1.在默认表单基本属性javascript 中增加如下金额转换方法 /** 数字金额大写转换(可以处理整数,小数,负数) */ function chineseNumber(dValue) { var maxDec = 2; // 验证输入金额数值或数值字符串: dValue = dValue.toString().replace(/,/g, ""); dValue =

NumberUtils

package cn.edu.hbcf.common.utils; import java.math.BigDecimal; import java.text.NumberFormat; import java.util.regex.Pattern; public class NumberUtils { /** * 处理Double类型数据,如果为空返回0,否则返回其值 * * @param d * @return */ public static double getDoubleNumber(

ruoyi后台管理系统分析(一)

ruoyi后台管理系统框架: 接下来我们,边看代码边分析代码: 一.common包 ----constant包 constant.java package com.ruoyi.common.constant; /** * 通用常量信息 * * @author ruoyi */ public class Constants { /** * UTF-8 字符集 */ public static final String UTF8 = "UTF-8"; /** * 通用成功标识 */ pub

JS将货币小写转换为大写

/** 数字金额大写转换(可以处理整数,小数,负数) */ function smalltoBIG(n) { var fraction = ['角', '分']; var digit = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']; var unit = [ ['元', '万', '亿'], ['', '拾', '佰', '仟'] ]; var head = n < 0? '欠': ''; n = Math.abs(n); var s =

财务金额大小写转换

//==========================财务流程,货币小写转换为大写========[开始]=============================================== //对应数据库[LR_Form_SchemeInfo]的F_Id //二位数组定义:["表单名称/编号","小写金额标识","大写金额标识"] //表单名称:对应[表单设计]中的名称,而非流程 /* var needTransForm = new

js浮点数计算问题 + 金额大写转换

一 js浮点数计算问题解决方案: 1.使用 NumberObject.toFixed(num) 方法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 2.较精度计算浮点数 //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显.这个函数返回较为精确的加法结果. //调用:accAdd(arg1,arg2) //返回值:arg1加上arg2的精确结果 function accAdd(arg1, arg2) { var r1, r2, m; t