diameter/lib/utils/utils.dart

52 lines
1.5 KiB
Dart
Raw Normal View History

import 'dart:math';
2021-10-22 23:08:09 +00:00
class Utils {
static double roundToDecimalPlaces(double value, int precision) {
double mod = pow(10.0, precision).toDouble();
return ((value * mod).round().toDouble() / mod);
}
static double addDoublesWithPrecision(double a, double b, int precision) {
double mod = pow(10.0, precision).toDouble();
double difference = (a * mod) + (b * mod);
return difference.round() / mod;
}
static int getFractionDigitsLength(double value) {
final fractionDigits = value.toString().split('.');
return fractionDigits[1].length;
}
static String toStringMatchingTemplateFractionPrecision(
double value, double template) {
final precision = getFractionDigitsLength(template);
return value.toStringAsFixed(precision);
}
2021-10-22 23:08:09 +00:00
static double convertMgPerDlToMmolPerL(int mgPerDl) {
return Utils.roundToDecimalPlaces(mgPerDl * 0.0555, 2);
2021-10-22 23:08:09 +00:00
}
static int convertMmolPerLToMgPerDl(double mmolPerL) {
return (mmolPerL * 18.018).round();
}
static double calculateCarbs(double carbsRatio, double portionSize) {
return Utils.roundToDecimalPlaces(carbsRatio * portionSize / 100, 2);
}
static double calculateCarbsRatio(
double carbsPerPortion, double portionSize) {
return portionSize > 0
? Utils.roundToDecimalPlaces(carbsPerPortion * 100 / portionSize, 2)
: 0;
}
static double calculatePortionSize(
double carbsRatio, double carbsPerPortion) {
return carbsRatio > 0
? Utils.roundToDecimalPlaces(carbsPerPortion * 100 / carbsRatio, 2)
: 0;
}
2021-10-22 23:08:09 +00:00
}