Ниже приведено целочисленное деление, а частное часто равно нулю, так как int
математика отбрасывает дробь.
int sumspaces;
...
sumspaces / 100
Ниже приведено int
деление 0.
int sumletters;
...
// v---------------v might be 0
sumletters / (sumspaces / 100);
Ошибка исключения с плавающей точкой ... Я почти уверен, что делю не на ноль.
По различным причинам общего обработчика ошибок, int
деление на ноль может быть сообщенным как исключение с плавающей запятой.
Так как во многих операциях тип результата находится не в операции, а только в присваивании, такие проблемы являются общими.
Вместо этого застрахуйте математика использует тип назначения.
// v---------------v int division
// float L = sumletters / (sumspaces / 100);
float L = sumletters / (sumspaces / 100.0f);
// ^------------------^ At least float division
В стороне: Нет веских оснований для использования float
типов здесь, просто используйте double
.
Обратите внимание, что код использует double
математика, а не float
математика в:
// v----v v---v v--v double constants
round ((0.0588 * L) - (0.296 * S) - 15.8)
// ^---^ double function