diff --git a/README.md b/README.md index 613b611..08d4aa4 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,7 @@ Kalkulator BMI Silahkan kembangkan aplikasi ini untuk melakukan perhitungan BMI Petunjuk lebih detil dapat dibaca di -https://docs.google.com/document/d/1iGiC0Bg3Bdcd2Maq45TYkCDUkZ5Ql51E/edit?rtpof=true \ No newline at end of file +https://docs.google.com/document/d/1iGiC0Bg3Bdcd2Maq45TYkCDUkZ5Ql51E/edit?rtpof=true + +Starter dimodifikasi dan terinspirasi dari: +https://developer.android.com/codelabs/basic-android-compose-calculate-tip#0 \ No newline at end of file diff --git a/app/src/main/java/com/example/tiptime/MainActivity.kt b/app/src/main/java/com/example/tiptime/MainActivity.kt index d0fdd80..4a0edce 100644 --- a/app/src/main/java/com/example/tiptime/MainActivity.kt +++ b/app/src/main/java/com/example/tiptime/MainActivity.kt @@ -127,11 +127,11 @@ fun TipTimeLayout() { modifier = Modifier.padding(bottom = 32.dp) ) Text( - text = stringResource(R.string.bmi_calculation, bmi), + text = stringResource(R.string.bmi_calculation, bmi), // rumus style = MaterialTheme.typography.displaySmall ) Text( - text = stringResource(R.string.bmi_category, category), + text = stringResource(R.string.bmi_category, category), // kategori style = MaterialTheme.typography.displaySmall ) @@ -185,13 +185,22 @@ fun RoundTheTipRow( * * Catatan: tambahkan unit test untuk kalkulasi BMI ini */ -private fun calculateBMI(BmiHeight: Double, BmiWeight: Double = 15.0, roundUp: Boolean): String { - var bmi = BmiWeight / 100 * BmiHeight - if (roundUp) { - bmi = kotlin.math.ceil(bmi) +private fun calculateBMI(BmiHeight: Double, BmiWeight: Double, useUSC: Boolean): String { + if (BmiHeight <= 0 || BmiWeight <= 0) return "0.0" + + val bmi = if (useUSC) { + // USC: Berat dalam lbs, tinggi dalam inches + 703 * (BmiWeight*2.2) / ((BmiHeight*0.29) * (BmiHeight*0.29)) + } else { + // SI Metric: konversi cm ke meter + val heightInMeter = BmiHeight / 100 + BmiWeight / (heightInMeter * heightInMeter) } - return NumberFormat.getNumberInstance().format(bmi) + + return String.format("%.2f", bmi) } + + /** * Calculates the BMI Category *