fixed while (int, short) to float , result not enough accurate