受 Project Euler Problem 17 的启发,写了(其实是改写)一个能把数字转换成英语的Ruby 过程。

# zero, one, two, three, four, five, six, seven, eight, nine, ten,
# elevent, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen, twenty, ...
# thirty, forty, fifty, sixty, seventy, eighty, ninety
# X hundred and X-X
# one thousand
$less_than_twenty = %w{zero one two three four five six seven eight nine ten elevent twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen}
$tens = %w{"" "" twenty thirty forty fifty sixty seventy eighty ninety}
def triple(n, unit)
str = ""
hundreds = n / 100
low_digit = n % 100
units_digit = n % 10
str += $less_than_twenty[hundreds] + " hundred and " if hundreds != 0
case low_digit
when 0
str.chomp!(" and ")
when 1 .. 19
str += $less_than_twenty[low_digit]
when 20, 30, 40, 50, 60, 70, 80, 90
str += $tens[low_digit/10]
else
str += $tens[low_digit/10] + "-" + $less_than_twenty[units_digit]
end
str += unit
end
def num2str(n)
str = ""
if n / 1_000_000 > 0
str += triple(n / 1_000_000, " million ")
end
if (n % 1_000_000) / 1_000 > 0
str += triple((n % 1_000_000) / 1_000, " thousand ")
end
if n % 1_000 > 0
str += triple(n % 1_000, "")
end
str
end
p num2str(123_456_789)

由于英语里面是千进制,故可以看成一个处理1, 000 以内的过程附加上单位(billion,million,thousand)。

如何将数字转换成英语相关推荐

  1. 将数字月份转换成英语字母的月份的例子

    将数字月份转换成英语字母的月份的例子 注意:输入数字时要将字符型变成整型 #将数字月份转换成英语字母的月份的表达形式 def month():months="JanFebMarAprMayJ ...

  2. php数字转英文,PHP金额数字转换成英文

    PHP金额数字转换成英文 $numTable[40]="FORTY "; $numTable[50]="FIFTY "; $numTable[60]=" ...

  3. 如何将数字转换成口语中的文本串

    概述 今天突发奇想, 写一个将数字转换成中文字符串的函数. 并不是将 1234 转成 '1234' , 而是将 1234 转成 '一千二百三十四'. 本来以为很简单, 写下来之后发现还是有些坑的. 尝 ...

  4. 将字符转换成数字(atoi),将数字转换成字符(itoa)

    目录 一.将字符转换为数字. 二.将数字转换成字符. 一.将字符转换为数字. (首先字符必须是"0" -"9",然后转换成十进制的数字) 比如将"12 ...

  5. 数字转换成字母帮助类

    C# 实现Excel(导出导入)非常实用的将数字转换成字母 /// <summary> /// 需要转换的行或者列 /// </summary> /// <param n ...

  6. 中文格式_财务必会Excel技巧,将数字转换成中文的5种方式

    你还在纠结如何把数字转换成中文大小写吗?下面和大家一起来学习把数字转换成中文的5种方法. 方式一:NUMBERSTRING函数 语法=NUMBERSTRING(数值,选项) 数值:被转换为中文字符串的 ...

  7. python中将数字转换成二进制数

    python中将数字转换成二进制数 256 128 64 32 16 8 4 2 1 1 0 1 0 1 0 1 1 0 这是快速得到342的方法 在python3.6中快速得到342的方法是使用bi ...

  8. js将数字转换成中文大写

    //完成将 toChineseNum, 可以将数字转换成中文大写的表示,处理到万级别,例如 toChineseNum(12345),返回 一万二千三百四十五.const toChinesNum = ( ...

  9. 中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八-->12345678)

    昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2-十换成10.可是那么问题来了- 一十二呢-不能是11 ...

最新文章

  1. 关于数组集合之间的转换
  2. 计算机网络 物理层链路层
  3. [android] 练习样式主题自定义activity切换动画
  4. maven error in opening zip file报错解决
  5. 【归并排序】奶牛的图片(jzoj 1812)
  6. python科学计算三剑客_1-python数据分析-数据分析介绍、数据分析三剑客之NumPy
  7. Spring源码分析-如何获取Bean对象
  8. linux c 多线程终止耗时长的任务,Linux C:从main()返回是否导致多线程应用程序终止?...
  9. pip 安装 tensoflow
  10. 如何提高 Rust 程序的性能?
  11. python教程博客园_python学习(一)—简明python教程
  12. 站在过去的肩膀上(一分钟能做什么?:不可思议的“战拖”心理学)
  13. 戴尔服务器bios修改风扇,BIOS风扇调整
  14. A到Z的unicode的编码的大小
  15. 香港主机与美国主机的相同点和不同点
  16. 务实至上:“PHP之父”Rasmus Lerdorf访谈录
  17. 格力(GREE)家用移动空调免安装一体机空调KY-23NK 清灰拆装教程
  18. Neo4j图数据库高级应用系列 / 服务器扩展指南 APOC(5.4) - 导出数据到Cypher脚本文件
  19. 【RNN基础】——一文搞明白RNN
  20. 苹果微信更新不了最新版本_教你安卓微信怎么更新到最新版本?

热门文章

  1. 格式化 命令 linux,Linux分区格式化的命令
  2. word中录入打钩方框——设计调查问卷必备技能
  3. 梦幻当前服务器为维护完成,维护公告
  4. 对工厂模式的一些理解
  5. HTML+CSS教程(四)选择器
  6. 流放之路 剧情 第七章
  7. 细说android广播机制(java)
  8. 非常简单的在线考试系统(附源码)
  9. facenet识别准确率_GitHub - zjj-2015/tf_facenet: facenet人脸检测与识别系统
  10. java swing暂停继续_如何在Java Swing应用程序中暂停/睡眠/等待?