在ruby中将字符串转换为十进制数

时间:2012-03-31 14:32:24

标签: ruby numbers decimal

我需要使用小数。 在我的程序中,用户需要输入一个带小数的数字来转换该数字。

问题是:如果我尝试将参数转换为数字,我会得到一个没有小数的整数。

# ARGV[0] is: 44.33

size = ARGV[0]

puts size.to_i
# size is: 44
# :(

4 个答案:

答案 0 :(得分:85)

你打电话给to_i,你得到整数。

尝试拨打to_f,你应该得到一个浮动。

有关更多字符串转换方法,look here

答案 1 :(得分:7)

你也可以使用十进制类

    JPanel bottomPanel = new JPanel();
    bottomPanel.setLayout(new BoxLayout(bottomPanel,BoxLayout.X_AXIS));

更新:

使用bigdecimal作为@ bigtex777提到:

来源:http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

答案 2 :(得分:5)

如果您希望通过计算获得更准确的答案,以避免出现类似https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c的错误,可以使用转换为小数 例子:

require 'bigdecimal'
require 'bigdecimal/util'

size = ARGV[0]
size = size.to_d

这应该使打印的数字变为小数,但是如果您想使其再次成为浮点数,只需再次将其放置到_f

size=size.to_f

puts size

答案 3 :(得分:1)

大写的转换方法是一种成熟的Ruby习惯用法。 See this great post from Advi Grimm

Integer("641339524823408659")
=> 641339524823408659