Fra*_*lin 5 java floating-point bigdecimal ieee-754
我正在制作一个程序,生成用于VHDL测试平台的测试向量.测试平台主要测试一块充当单精度浮点加法器的硬件,因此矢量符合IEEE 754标准.
无论如何,我目前的生成计划是将浮点值转换为BigDecimal,执行必要的算术,然后转换回浮点数.这有危险吗?是否会丢失精度,导致测试向量中的结果可能不准确?我想转换成BigDecimal,所以我可以避免舍入问题.
这会截断结果吗?
BigDecimal repA = new BigDecimal(Float.toString(A));
BigDecimal repB = new BigDecimal(Float.toString(B));
BigDecimal repResult = repA.add(repB);
float result = repResult.floatValue();
Run Code Online (Sandbox Code Playgroud)
其中A和B是浮点数.
如果您的目标是在浮点数的预期限制内具有准确的32位浮点向量,那么我喜欢您的方法.您首先将32位浮点数转换为具有更高精度的对象,执行数学步骤,然后转换回32位浮点数.最后,您的舍入错误可能会低于您在32位浮点数中本机执行相同系列步骤的情况.
如果您的目标是准确地模拟使用32位浮点数本机执行计算的硬件的预期结果,那么您可能会冒错误报告测试失败的风险,因为您的计算执行的准确性高于硬件测试.
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |