2
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
  1. 如何转换0.601E16.1in BigDecimal

  2. 我在哪里可以找到一些基本BigDecimal资源?

  3. 还有其他我应该记住的基本概念吗? BigDecimal

4

4 回答 4

2

1)你必须打电话#to_sparamter 'F'

sum2.to_s('F')

其他人给你的解决方案不是很好,如果你将 BigDecimal 转换为立即浮点数,你会失去精度。

2) Ruby 文档非常好。

3) 重要的概念是:不要将使用 BigDecimal 计算的即时结果转换为 Float(即 IEE 浮点数)。你会用这种方式摧毁所有的努力。这是一个很容易掌握的概念,但很多人都没有掌握。

于 2013-10-21T09:48:49.253 回答
0
  1. 看看这个方法

  2. 文档本身内嵌了一些很好的示例,说明了如何使用一些不同的调用。

  3. 再一次,文档有很多很好的信息——要记住的是,可能有正零和负零

抱歉,我意识到这里的所有内容都指向文档,但老实说,这是我在寻找答案时首先看的地方。

于 2013-10-21T09:48:18.937 回答
0
 (BigDecimal.new("2.33") + BigDecimal.new("3.68")).to_f
于 2013-10-21T09:50:03.707 回答
-1

这是一次尝试使用BigDecimal#to_f

require 'bigdecimal'

sum = BigDecimal.new("2.33")

sum1 = BigDecimal.new("3.68")

sum2 = sum + sum1
puts sum2.to_f
# >> 6.01
于 2013-10-21T09:47:10.143 回答