Почему идёт разница в округлении?

var weight = 5;
var length = 60;
var age = 5;
var activityRate = 1.725;

var metabolicRate = 88.362 + (13.397 * weight) + (4.799 * length) - (5.677 * age);
var calorieRate = Math.round(metabolicRate * activityRate);
var proteins = Math.round((((calorieRate- ( 25 / 100 ) - ( 35 / 100))*40/100)));
var fats = Math.round((calorieRate - ( 40 / 100 ) - ( 35 / 100 ))*25/100);
var carbohydrates = Math.round(((calorieRate -(40/100 )-(25/100))*35/100));

Выдаёт что у меня ошибка в третьем тесте при расчёте углеводов:
Ваше значение carbohydrates равное 767 не совпадает с ожидаемым значением 768 .
Всё остальное правильное.Почему так?

Что это за конструкция -(40/100)-(25/100) и аналоги? Какой смысл оно несет? Оно как раз и дает погрешность в каждом расчете от 0.6 до 0.75
Можно обойтись без введения промежуточной переменной, формула и так громоздкая, от +1 операнда она сложнее не станет.

вот моё
 var calorieRate = Math.round((88.362+13.397*weight+4.799*length-5.677*age)*activityRate);
 var proteins = Math.round(40/100*calorieRate);
 var fats = Math.round(25/100*calorieRate);
 var carbohydrates = Math.round(35/100*calorieRate);
 console.log('Всего калорий: '+calorieRate+'ккал., Белки: '+fats+'ккал., Жиры: '+'ккал., Углеводы: '+ carbohydrates +'ккал.');