请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2144|回复: 4

[系统] 人民币大写转换研究

[复制链接]

该用户从未签到

发表于 2013-10-14 10:17:19 | 显示全部楼层 |阅读模式
        人民币大写转换研究
人民币大写转换是一个实用功能,经过笔者研究,目前大多数软件该功能都有问题,包括一些小工具,在线转换,办公软件。以下是测试报告:
1.某小工具
-922337203685477.5808
零玖贰贰万叁仟叁佰柒拾贰亿零叁佰陆拾捌万伍仟肆佰柒拾柒圆陆角叁分
file:///C:\DOCUME~1\admin\LOCALS~1\Temp\ksohtml\wps_clip_image1.png
2.WPS2007    ET程序   -922337203685477.5808
file:///C:\DOCUME~1\admin\LOCALS~1\Temp\ksohtml\wps_clip_image2.wmf
错误1:小数丢失
错误2: 负符号丢失
922337203685477.5808
正数测试,发现:
错误1:小数丢失
玖佰贰拾贰兆叁仟叁佰柒拾贰亿零叁佰陆拾捌万伍仟肆佰柒拾捌
九百二十二兆三千三百七十二亿○三百六十八万五千四百七十八
3.百度应用测试
file:///C:\DOCUME~1\admin\LOCALS~1\Temp\ksohtml\wps_clip_image3.wmf
4.excel 2007
922337203685477.5808
file:///C:\DOCUME~1\admin\LOCALS~1\Temp\ksohtml\wps_clip_image4.wmf
结果:错误
ABC拼音只能得到数字中文小写
===============================================
九二二三三七二○三六八五四七七。五八○八
5.Delphi 某简单算法
function FloatToRMBStr(i:Real):string;
const
   d='零壹贰叁肆伍陆柒捌玖分角元拾佰仟万拾佰仟亿';
var
   m,k:string;
   j:integer;
begin
   k:=';
   m:=floattostr(int(i*100)
   for j:=length(m) downto 1 do
     k:=k+d[(strtoint(m[Length(m)-j+1])+1)*2-1]+
       d[(strtoint(m[Length(m)-j+1])+1)*2]+d[(10+j)*2-1]+d[(10+j)*2];
   result:=k;
end;
这个算法报告错误:
file:///C:\DOCUME~1\admin\LOCALS~1\Temp\ksohtml\wps_clip_image5.wmf
6.正确的改进算法
=====================================================
922  3372 0368 5477.58 08
玖佰贰 拾贰万叁仟 叁佰柒拾贰亿  零仟叁佰陆拾捌万  伍仟肆佰柒拾柒元  伍角捌分
-922337203685477.5807
负玖佰贰拾贰万叁仟叁佰柒拾贰亿零仟叁佰陆拾捌万伍仟肆佰柒拾柒元伍角捌分
============也就是可以支持计算机可以表达的currency数据类型
超过currency也可以支持,例子:
-1922337203685477.5807
负壹仟玖佰贰拾贰万叁仟叁佰柒拾贰亿零仟叁佰陆拾捌万伍仟肆佰柒拾柒元伍角捌分
基本可以支持到浮点数17.2位有效数字
人民币大写转换程序  作者:steven 保留所有权利 QQ:1565498246
2013-10-14

详细信息见附件:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

该用户从未签到

发表于 2014-2-7 17:09:47 | 显示全部楼层
嗯,另一种思路。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-7-8 14:49:50 | 显示全部楼层
负壹仟玖佰贰拾贰万叁仟叁佰柒拾贰亿零仟叁佰陆拾捌万伍仟肆佰柒拾柒元伍角捌分
那个红色的部分不觉得是多余吗?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-8-4 15:15:08 | 显示全部楼层
有研究才有进步,顶顶
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2014-10-5 08:42:30 | 显示全部楼层
呵呵,支持.以前也写过一个,但没想这么多
回复 支持 反对

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2019-9-21 17:21 , Processed in 0.122782 second(s), 25 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2019 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表