Я понимаю, что преобразование в режиме strictfp используется для переносимости, а не для точности, как указано в этом вопросе. Однако в спецификации языка Java, Java SE 8 Edition говорится, что
Расширяющее примитивное преобразование из float в double, не являющееся strictfp, может привести к потере информации об общей величине преобразованного значения.
мне кажется, что расширяющее примитивное преобразование то есть strictfp предназначено для точности. Кроме того, я подозреваю, что double может представлять буквально все значения, которые может принимать float, и я не вижу причин, почему преобразование из float в double является здесь проблемой.
ИЗМЕНИТЬ:
Формулировка «... может потерять информацию о...» в спецификации дала мне ощущение, что преобразование в режиме без strictfp не имеет какой-то точности по сравнению с преобразованием в режиме strictfp. Для меня это не имело смысла, потому что преобразование в режиме non-strictfp, возможно, использует промежуточные значения с более высокой точностью. Этот вопрос был впервые написан на основе этого понимания и может показаться не таким желательным, как вы ожидали.