Я использую следующий метод на Windows 8 (Intel Atom Z3775):Strictfp возвращает разные результаты на разных системах
public static strictfp void main(String args[])
{
float a = 0.000000002f;
float b = 90000300000000004f;
float c = a * b;
System.out.println(c);
}
, который дает мне: 1.80000592E8
При запуске
public strictfp void calculate()
{
float a = 0.000000002f;
float b = 90000300000000004f;
float c = a * b;
Toast.makeText(getApplicationContext(), c + "", Toast.LENGTH_LONG).show();
}
i get: 1.8000059E8
Почему они отличаются? Я использую strictfp неправильно?
Что произойдет, если вы напечатаете 'String.format («% 08x », Float.floatToIntBits (c))' вместо этого в обоих случаях? –
Они возвращают точно такую же строку. Использование Float.toString (c) для преобразования в String на обеих формах не помогает. – Geosearchef
Вправо - поэтому фактические цифры побитообразны. Существует просто разница в реализации алгоритма для превращения float в строку. –