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

Ele*_*ios 57 ruby numbers decimal

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

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

# ARGV[0] is: 44.33

size = ARGV[0]

puts size.to_i
# size is: 44
# :(
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 88

你打电话to_i,你得到整数.

试着打电话to_f,你应该得到一个浮动.

有关更多字符串转换方法,请查看此处.

  • 还有"to_d",如Tau-fan的回答所述/sf/answers/3604596271/ (4认同)

Tau*_*-if 11

如果您想通过计算获得更准确的答案以避免此类https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c这样的错误,则可以使用转换为小数的示例:

require 'bigdecimal'
require 'bigdecimal/util'

size = ARGV[0]
size = size.to_d
Run Code Online (Sandbox Code Playgroud)

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

size=size.to_f

puts size
Run Code Online (Sandbox Code Playgroud)


luc*_*usa 8

您也可以使用十进制类

a = '2.45'
Decimal(a) # => 2.45
Run Code Online (Sandbox Code Playgroud)

更新:

使用bigdecimal作为@ bigtex777提到:

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

  • 这似乎也不适用.你可以'要求'bigdecimal'; BigDecimal.new( '3.333')` (4认同)