gpt4 book ai didi

Ruby BigDecimal 四舍五入

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:59 28 4
gpt4 key购买 nike

我想将一个 BigDecimal 四舍五入到小数点后两位,但是当使用 round 方法时,它似乎没有双舍入:

BigDecimal.new('43382.0249').round(2).to_s('F').should == '43382.03'

但相反,我得到输出:43382.02

我还尝试了所有其他可用的舍入模式,ROUND_UP 似乎可以完成这项工作,但它搞砸了其他舍入场景,例如“670.1541”变为“670.16”(不正确)而不是“670.15”(正确)

最佳答案

正确答案:您所做的称为“创意舍入”。如果您在会计系统上工作,这也称为“欺诈”。你不应该像这样“圆”。

您正在寻找的答案:

您可以使用执行以下操作的算法来完成此操作:

x = the number of decimal places you would like to consider
y = the number of decimal placed you would like left when you are re done
while( x >= y )
round your number to x places
x = x-1

所以在 ruby 中:

my_num = 1.2349
x = 100
y = 2
x.downto y do |i|
my_num = my_num.round i
end
puts my_num

这给我们 1.24,如果 my_num 是 1.2341,它给我们 1.23。

明智地使用,如果可能的话?

关于Ruby BigDecimal 四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10090728/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com