我需要使用十进制数。
在我的程序中,用户需要输入一个带有小数的数字以进行转换。
问题是:如果我尝试将参数转换为数字,我会得到一个没有小数位的整数。
# ARGV[0] is: 44.33
size = ARGV[0]
puts size.to_i
# size is: 44
# :(
如果您想要更准确的答案并避免像这样的错误 https://www.codecademy.com/en/forum_questions/50fe886f68fc44056f00626c,您可以将其转换为十进制数进行计算。
require 'bigdecimal'
require 'bigdecimal/util'
size = ARGV[0]
size = size.to_d
这将使打印的数字变为十进制,但如果您想再次将其作为浮点数,请再次使用 to_f。
size=size.to_f
puts size
a = '2.45'
Decimal(a) # => 2.45
更新:
使用bigdecimal,正如@bigtex777所提到的:
来源: http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html
require 'bigdecimal'; BigDecimal.new('3.333')
。 - bigtex777BigDecimal.new('3.333')
does not work, should be BigDecimal('3.333')
- Denn大写转换方法是Ruby中一个成熟的惯用语法。请查看Advi Grimm的这篇优秀文章
Integer("641339524823408659")
=> 641339524823408659