gpt4 book ai didi

java - 从 float 转换为 BigDecimal 然后再转换回来是否危险?

转载 作者:搜寻专家 更新时间:2023-10-31 20:05:09 40 4
gpt4 key购买 nike

我正在制作一个程序,该程序生成用于 VHDL 测试平台的测试 vector 。测试平台实质上是测试一 block 用作单精度浮点加法器的硬件,因此 vector 将符合 IEEE 754 标准。

无论如何,我目前的生成计划是将 float 值转换为 BigDecimal,进行必要的算术运算,然后再转换回 float。这很危险吗?精度是否会丢失,从而导致测试 vector 中的结果可能不准确?我想转换为 BigDecimal,这样我就可以避免舍入问题。

那么这会截断结果吗?

BigDecimal repA = new BigDecimal(Float.toString(A));
BigDecimal repB = new BigDecimal(Float.toString(B));
BigDecimal repResult = repA.add(repB);
float result = repResult.floatValue();

其中 A 和 B 是一些 float 。

最佳答案

如果您的目标是在 float 的预期限制内获得准确的 32 位浮点 vector ,那么我喜欢您的方法。您首先要将 32 位 float 转换为精度更高的对象,对数学执行几个步骤,然后再转换回 32 位 float 。最后,与在 32 位 float 中 native 执行相同系列步骤相比,舍入误差可能会更低。

如果您的目标是准确模拟使用 32 位 float native 执行计算的硬件的预期结果,那么您可能会冒着错误地报告测试失败的风险,因为您的计算执行的准确性高于正在测试的硬件。

关于java - 从 float 转换为 BigDecimal 然后再转换回来是否危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958355/

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