使用sprintf仅显示浮点数中的十进制值

时间:2014-11-07 09:16:00

标签: ruby printf

我一直试图只得到一个浮点数的小数点值,这是我的观点

21.95 => .95

22.00 => .00

我尝试使用以下正则表达式

  

\。\ d {2}

我甚至有其他解决方案

number = 21.96.round(2)

precision = number - number.to_i

"." + number.to_s.split('.')[1]

但是我无法通过sprintf找到它,这就是我想要的

2 个答案:

答案 0 :(得分:2)

您只能使用模块功能获取小数部分。这是使用sprintf的解决方案

a = 1001.123123
sprintf("%.2f", a.modulo(1))
# prints 0.12

没有sprintf,

a = 1001.123123
puts a.modulo(1).round(2)
# prints 0.12

获取小数部分here的相关问题以及有关modulo function here的更多内容。

答案 1 :(得分:0)

我认为最好从char角度来解决这个问题。 首先将double转换为chars数组,然后检查每个字符是否为该字符的值为“。”。 接下来,您只需将以下字符放入字符串中,然后在sprintf中输出。