Опасно ли преобразование из float в BigDecimal и обратно?

Я нахожусь в процессе создания программы, которая генерирует тестовые векторы для использования в тестовом стенде 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 — число с плавающей запятой.

5
задан Franklin 4 April 2012 в 22:15
поделиться