强制Ruby不以标准格式/科学记数法/指数表示法输出浮点数

我遇到了与python相同的问题,但对于ruby。

我需要输出一个这样的小数:0.00001,而不是1e-5。

有关我的特定问题的更多信息,我使用f.write("My number: " + small_number.to_s + "\n")输出到文件

对于我的问题,准确性并不是一个大问题,所以只需要做一个if语句来检查small_number <1e-5然后打印0是否正常,它看起来并不像它应该的那样优雅。

那么更普遍的方法是什么呢?

 f.printf "My number: %.5f\n", small_number 

您可以用您喜欢的任何特定格式大小替换.5(小数点右边的5位数),例如,%8.3f将是小数点右边三位的总共8位数字,非常类似于C / C ++ printf格式字符串。

如果你总是想要5位小数,你可以使用:

 "%.5f" % small_number 

我会做这样的事情,所以你可以剥离尾随零:

 puts ("%.15f" % small_number).sub(/0*$/,"") 

不要超过15,否则你会受到浮点数不精确的影响。

 puts ("%.25f" % 0.01).sub(/0*$/,"") 0.0100000000000000002081668