Skip to content
Snippets Groups Projects
Commit eb6dfd18 authored by Blersch Lara's avatar Blersch Lara
Browse files

changed double to BigDecimal in NutritionTableCalculator

parent f8c0959e
No related merge requests found
......@@ -23,15 +23,15 @@ public class NutritionCalculator {
return NutritionTable.empty();
}
double totalCals = 0,
totalCarbs = 0,
totalFats = 0,
totalProteins = 0,
totalFibers = 0,
totalSalt = 0;
BigDecimal totalCals = BigDecimal.ZERO,
totalCarbs = BigDecimal.ZERO,
totalFats = BigDecimal.ZERO,
totalProteins = BigDecimal.ZERO,
totalFibers = BigDecimal.ZERO,
totalSalt = BigDecimal.ZERO;
for (RecipeComponent entry : ingredients.keySet()) {
//TODO: adjust to change in NutritionTable: double -> BigDecimal
final Map<Nutrition, BigDecimal> nutritionTable = entry.getNutritionTable().getTable();
int divisor;
......@@ -40,15 +40,15 @@ public class NutritionCalculator {
} else {
divisor = 100;
}
totalCals += nutritionTable.get(Nutrition.CALORIES).doubleValue() * ingredients.get(entry) / divisor;
totalCarbs += nutritionTable.get(Nutrition.CARBS).doubleValue() * ingredients.get(entry) / divisor;
totalFats += nutritionTable.get(Nutrition.FAT).doubleValue() * ingredients.get(entry) / divisor;
totalProteins += nutritionTable.get(Nutrition.PROTEINS).doubleValue() * ingredients.get(entry) / divisor;
totalFibers += nutritionTable.get(Nutrition.FIBERS).doubleValue() * ingredients.get(entry) / divisor;
totalSalt += nutritionTable.get(Nutrition.SALT).doubleValue() * ingredients.get(entry) / divisor;
totalCals = totalCals.add(nutritionTable.get(Nutrition.CALORIES).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
totalCarbs = totalCarbs.add(nutritionTable.get(Nutrition.CARBS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
totalFats = totalFats.add(nutritionTable.get(Nutrition.FAT).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
totalProteins = totalProteins.add(nutritionTable.get(Nutrition.PROTEINS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
totalFibers = totalFibers.add(nutritionTable.get(Nutrition.FIBERS).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
totalSalt = totalSalt.add(nutritionTable.get(Nutrition.SALT).multiply(BigDecimal.valueOf(ingredients.get(entry))).divide(BigDecimal.valueOf(divisor)));
}
log.info("NutritionTable calculated successfully.");
return new NutritionTable(totalCals, totalCarbs, totalFats, totalProteins, totalFibers, totalSalt);
return new NutritionTable(totalCals.doubleValue(), totalCarbs.doubleValue(), totalFats.doubleValue(), totalProteins.doubleValue(), totalFibers.doubleValue(), totalSalt.doubleValue());
}
......@@ -63,6 +63,7 @@ public class NutritionCalculator {
totalFibers = 0,
totalSalt = 0;
//we calculate with double -> still rounding errors! that's why testCalculateNutritionTableFromIngredients failes
for (Recipe r : plan.values()) {
final Map<Nutrition, BigDecimal> nutritionTable = r.getNutritionTable().getTable();
totalCals += nutritionTable.get(Nutrition.CALORIES).doubleValue();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment