一种创建巨数的方法
A method for creating a huge number
RubyMonk 指出了如何使用下划线来方便地编写大量数字,如果不进行分界,这些数字将变得难以阅读。
他们的任务是:尝试使用下划线来制作一个巨大的、可读的数字。他们提供此代码:
def describe(something)
puts "I am a: #{something.class} and I look like: #{something}"
end
def big_num
# create a huge number
end
describe(big_num)
谁能解释一下我将如何创造一个巨大的数字?根据下面的错误信息,我必须在代码中使用下划线才能通过。
Ruby 允许您在书写文字数字时加上下划线,以便大数字更易于阅读。
惯例是,如果数字的长度为 4 位或更少,则不应在每三个数字上加上下划线,如果它更长,则从右开始:
10_000_000 # => 10000000
也适用于浮点数:
10_000.0 # => 10000.0
如果将下划线放在两个数字之间,解释器将忽略它们:
1_2_3_4_5 # => 12345
查看错误信息后,很明显RubyMonk 期望Bignum
。这是另一个魔术,解释器透明地执行 - 如果数字小到可以映射到体系结构的 int,则该数字是 Fixnum
:
的实例
100.class # => Fixnum
如果不是这种情况,Ruby 会自动使用专用的 class (Bignum
):
(10_000_000**100).class # => Bignum
# 10_000_000 to the power of 100,
# which is a very big number and
# thus stored in Bignum
RubyMonk 需要 class Bignum 的对象,它是标准 Ruby 库的一部分。来自文档:
Bignum objects hold integers outside the range of Fixnum. Bignum
objects are created automatically when integer calculations would
otherwise overflow a Fixnum.
所以你只需要创建一个大于 Fixnum 可以处理的数字。例如,这将通过 RubyMonk 的规范:
def big_num
5_000_000_000_000_000_000_000
end
因为数字大于 Fixnum 的处理能力,Ruby 自动 returns 一个 Bignum。例如,尝试 运行 这个:
5_000_000_000.class
# => Fixnum
5_000_000_000_000_000_000_000.class
# => Bignum
Ruby 允许使用下划线作为占位符(即它们只是为了增加人类的可读性,否则将被忽略)。所以你的 big_num
方法可以只有一行:
return 1_000_000_000_000_000_000_000_000_000_000_000
调用它会 return 1000000000000000000000000000000000
(return
关键字是可选的)
RubyMonk 指出了如何使用下划线来方便地编写大量数字,如果不进行分界,这些数字将变得难以阅读。
他们的任务是:尝试使用下划线来制作一个巨大的、可读的数字。他们提供此代码:
def describe(something)
puts "I am a: #{something.class} and I look like: #{something}"
end
def big_num
# create a huge number
end
describe(big_num)
谁能解释一下我将如何创造一个巨大的数字?根据下面的错误信息,我必须在代码中使用下划线才能通过。
Ruby 允许您在书写文字数字时加上下划线,以便大数字更易于阅读。
惯例是,如果数字的长度为 4 位或更少,则不应在每三个数字上加上下划线,如果它更长,则从右开始:
10_000_000 # => 10000000
也适用于浮点数:
10_000.0 # => 10000.0
如果将下划线放在两个数字之间,解释器将忽略它们:
1_2_3_4_5 # => 12345
查看错误信息后,很明显RubyMonk 期望Bignum
。这是另一个魔术,解释器透明地执行 - 如果数字小到可以映射到体系结构的 int,则该数字是 Fixnum
:
100.class # => Fixnum
如果不是这种情况,Ruby 会自动使用专用的 class (Bignum
):
(10_000_000**100).class # => Bignum
# 10_000_000 to the power of 100,
# which is a very big number and
# thus stored in Bignum
RubyMonk 需要 class Bignum 的对象,它是标准 Ruby 库的一部分。来自文档:
Bignum objects hold integers outside the range of Fixnum. Bignum objects are created automatically when integer calculations would otherwise overflow a Fixnum.
所以你只需要创建一个大于 Fixnum 可以处理的数字。例如,这将通过 RubyMonk 的规范:
def big_num
5_000_000_000_000_000_000_000
end
因为数字大于 Fixnum 的处理能力,Ruby 自动 returns 一个 Bignum。例如,尝试 运行 这个:
5_000_000_000.class
# => Fixnum
5_000_000_000_000_000_000_000.class
# => Bignum
Ruby 允许使用下划线作为占位符(即它们只是为了增加人类的可读性,否则将被忽略)。所以你的 big_num
方法可以只有一行:
return 1_000_000_000_000_000_000_000_000_000_000_000
调用它会 return 1000000000000000000000000000000000
(return
关键字是可选的)