gpt4 book ai didi

java - 将 Java BigDecimal 舍入到最近的间隔

转载 作者:太空狗 更新时间:2023-10-29 22:56:15 25 4
gpt4 key购买 nike

我有一个 BigDecimal 计算结果,我需要将其四舍五入到最接近的指定区间(在本例中为金融市场报价单位大小)。

例如价格 [Tick Size] -> 四舍五入的价格

100.1 [0.25] -> 100
100.2 [0.25] -> 100.25
100.1 [0.125] -> 100.125
100.2 [0.125] -> 100.25

谢谢。

更新:schnaader 的解决方案,翻译成 Java/BigDecimal 术语:

price = price.divide(tick).setScale(0, RoundingMode.HALF_UP).multiply(tick)

最佳答案

您可以标准化刻度大小,然后使用通常的舍入方法:

100.1 [0.25] -> * (1/0.25) -> 400.4 [1]  -> round -> 400 -> / (1/0.25) -> 100
100.2 [0.25] -> * (1/0.25) -> 400.8 [1] -> round -> 401 -> / (1/0.25) -> 100.25

所以应该是:

Price = Round(Price / Tick) * Tick;

另请注意,您似乎必须为 BigDecimals 设置正确的舍入模式。参见 BigDecimal Docs例如。所以你应该确保正确设置它并编写一些测试来检查你的代码的正确性。

关于java - 将 Java BigDecimal 舍入到最近的间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641848/

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