require 'bigdecimal'
sum = BigDecimal.new("2.33")
sum1 = BigDecimal.new("3.68")
sum2 = sum + sum1
puts sum2
# 0.601E1
# my attempt at converting scientific notation
puts sum2.to_i
# 6
如何在0.601E1
中将6.1
转换为BigDecimal
?
我在哪里可以找到一些基本的BigDecimal
资源?
我还应该记住其他基本的 BigDecimal
概念吗?
答案 0 :(得分:2)
1)您必须使用#to_s
致电paramter 'F'
。
sum2.to_s('F')
其他人给你的解决方案并不好,如果你将BigDecimal转换为直接浮点数,你会失去精确度。
2)Ruby documentation非常好。
3)重要的概念是:不要将使用BigDecimal计算的立即结果转换为Float(这是IEE浮点数)。你将以这种方式摧毁所有的努力。这是一个如此简单的概念,但很多人都没有。
答案 1 :(得分:0)
以下是使用BigDecimal#to_f
的一次尝试:
require 'bigdecimal'
sum = BigDecimal.new("2.33")
sum1 = BigDecimal.new("3.68")
sum2 = sum + sum1
puts sum2.to_f
# >> 6.01
答案 2 :(得分:0)
有一些很好的例子inlined in the docs themselves,说明了如何使用一些不同的电话。
再一次,文档有很多好的信息 - 要记住的是possible to have both positive and negative zeroes
很抱歉,我意识到这里的所有内容都指向了文档,但老实说,这是我在寻找答案时所看到的第一个地方。
答案 3 :(得分:0)
(BigDecimal.new("2.33") + BigDecimal.new("3.68")).to_f