Я нахожусь в процессе создания программы, которая генерирует тестовые векторы для использования в тестовом стенде 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();
Где A и B - некоторые поплавки.