我正在使用Ruby-on-Rails 3.0.5應用程序,該應用程序有許多數字字段。它已被上面的那些規定,所有的數字「數量」字段以15的精度(即小數點後15位)存儲。在具有高精度的數字上使用Ruby on Rails 3.0.5中的number_with_precision
在一個特定的字段中,存儲的號碼是99999.999999999900000。要在屏幕上顯示它的應用程序是簡單地做這個
<%= number_with_precision(item.quantity, :precision => 15) %>
然而,這種在頁面上顯示以下
99999.999999999898137
同樣,當進入99999.999999999999999(是的,這是正確的。15位小數) ,那麼該數字將顯示爲100000.000000000000000,即使該數字存儲在數據庫中並且所有的榮耀都是9。
我可以刪除使用number_with_precision的,只是做<%= item.quantity%>,這顯示它很好,但我認爲是需要本地化(這是很重要的應用程序)number_with_precision。
那麼,這是一個number_with_precision的錯誤?是否有另一種方式來格式化與本地化一起使用的大型精確數字?或者這是由於浮點算術而無法避免的?
我的確意識到輸入如此大的小數點位數是不必要的,而降低精確度水平可能是一條可行的路線,但我需要一個令人信服的論證來說服這種能力。
99999.999999999999999.to_s確實返回100000.0。然而99999.999999999900000.to_s返回99999.9999999999,而不是99999.999999999898137,正如我的問題所述,所以在這裏可能有多個錯誤... –