![](/img/trans.png)
[英]How to define custom unit (or predefined quantity) “roll” using JSR-363?
[英]Unit Of Measures API (JSR-363) - Floating Point Errors
我們使用 tec.units.unit-ri 作為 JSR-363 javax.measure.unit-api 的實現。
我們在應用程序中使用了幾種重量、長度和溫度類型,我們決定使用 BigDecimal 來存儲它們。 在進行一些轉換時,我意識到我們的實例中出現了浮點錯誤。
Unit<Length> metres = Units.METRE;
Unit<Length> centimetres = Units.METRE.divide(100);
BigDecimal valueInCentimetres = new BigDecimal("10.1");
Quantity<Length> valueInMetres = Quantities.getQuantity(valueInCentimetres, centimetres).to(metres) ;
如果我運行此代碼,變量valueInMetres
包含一個浮點錯誤為 0.10099999999999999 m 的Double
表示。 該實現在內部使用double
精度值,並在轉換值時失去精度。 我們需要對值進行舍入/引入一個比例,這並不理想。
有什么明顯的我做錯了嗎? 我是否錯過了某種使我能夠保持精度的 API 使用方法,或者無論我做什么,所有轉換都通過Double
值路由並且會失去精度?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.