Ruby 大十进制小数点后有 2 个数字

标签 ruby bigdecimal

我这段代码:

require 'bigdecimal'
a = BigDecimal.new(1, 2)

虽然我们可以拥有这些值:

a.to_s #=> "0.1E1"
a.to_f #=> 1.0

我更愿意获得这个:a.to_string # => "1.00"

你知道吗Ruby's BigDecimal无需创建额外的 #to_string 方法就能做到这一点吗?

如果不是,那么拥有一个大十进制数且小数点后始终有 2 个数字的最佳解决方案是什么?

最佳答案

可以,但这是一种输出格式。

sprintf( "%.02f", a)
# => "1.00"

您可以定义这样的方法:

class BigDecimal
  def to_string
    sprintf( "%.02f", self)
  end
end

a.to_string
=> "1.00"

根据@CarySwoveland的建议,你也可以这样写

sprintf( "%.02f" % a)
sprintf( "%.02f %.02f %.02f" % [a, b, c])

关于Ruby 大十进制小数点后有 2 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32847339/

相关文章:

Java BigDecimal 到 String

ruby - 将 pp 的结果(或输出到控制台的任何内容)放入字符串中

ruby - 针对单词文件验证输入的最简单方法?

java - 使用 @javax.validation.constraints.Digits 检查精度后 bigdecimal 是否只有 2 位数

java - BigDecimal - Material 小数位

java - 流 : Calculate the difference of totals in one go

java - 返回 double 值作为非科学字符串

php - 将 PHP 代码转换为 Ruby 以获得 SHA512 哈希码

ruby-on-rails - ruby 1.9.2 出现 fastercsv 错误

ruby-on-rails - ActiveRecord 用户提供的列名