From 6b7eab109596c8918f7bdab148fbcb33d4943b7b Mon Sep 17 00:00:00 2001 From: Timmy Date: Fri, 17 Apr 2026 13:10:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20Kotlin=20=E5=9B=9B?= =?UTF-8?q?=E6=8D=A8=E4=BA=94=E5=85=A5=EF=BC=88=E5=8E=9F=E6=9C=AC=20kotlin?= =?UTF-8?q?.math.round=20=E6=98=AF=E9=8A=80=E8=A1=8C=E5=AE=B6=E6=8D=A8?= =?UTF-8?q?=E5=85=A5=EF=BC=8C=E6=94=B9=E7=94=A8=20BigDecimal=20HALF=5FUP?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/tw/local/botrates/MainActivity.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/java/tw/local/botrates/MainActivity.kt b/android/app/src/main/java/tw/local/botrates/MainActivity.kt index 5b4aed1..431fd8f 100644 --- a/android/app/src/main/java/tw/local/botrates/MainActivity.kt +++ b/android/app/src/main/java/tw/local/botrates/MainActivity.kt @@ -47,8 +47,11 @@ import androidx.compose.ui.unit.sp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext +import java.math.BigDecimal +import java.math.RoundingMode import java.net.HttpURLConnection import java.net.URL +import java.text.DecimalFormat import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -82,13 +85,14 @@ private fun fetchRates(): List { private fun parseAmount(s: String): Double? = s.filter { it != ',' && !it.isWhitespace() }.takeIf { it.isNotEmpty() }?.toDoubleOrNull() -private fun formatTwd(v: Double): String { - val rounded = kotlin.math.round(v * 100.0) / 100.0 - return "%,.2f".format(rounded) -} +private fun roundHalfUp(v: Double): BigDecimal = + BigDecimal.valueOf(v).setScale(2, RoundingMode.HALF_UP) + +private fun formatTwd(v: Double): String = + DecimalFormat("#,##0.00").format(roundHalfUp(v)) private fun formatTwdRaw(v: Double): String = - "%.2f".format(kotlin.math.round(v * 100.0) / 100.0) + roundHalfUp(v).toPlainString() class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) {