我目前正在做一个项目欧拉问题,要求我找到重复小数的模式。但是,Ruby太快了,我无法找到一种方法来将小数字充实到第n位。
例如:
1/7.to_f => 0.14285714285714285
但是我试图这样做:
1/7.to_f => 0.14285714285714285714285714285757142857142857
非常感谢任何帮助!
答案 0 :(得分:2)
所有语言都支持能够定义输出中浮点的精度。 Ruby使用通用格式字符串:
pi = 355.0/113.0
'%1.5f' % pi # => "3.14159"
或者,在您的情况下:
'%1.20f' % (1.0/7.0) # => "0.14285714285714284921"
'%1.20f' % (1.to_f/7) # => "0.14285714285714284921"
'%1.20f' % (1/7.to_f) # => "0.14285714285714284921"
我建议您阅读字符串%
和Kernel::sprintf的文档。 Ruby如何确定使用固定或浮动数学以及to_f
的用法都包含在任何体面的Ruby教程中。
答案 1 :(得分:1)
通过以10的幂递增计算,您可以轻松获得任意数量的重复数字
10**100/7
=> 1428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428571428