更新文件:TWD 改為整數四捨五入的說明與 Kotlin 陷阱紀錄
This commit is contained in:
@@ -50,7 +50,8 @@ cd .. && zip -9 bot_rates.zip bot_rates.exe
|
||||
- **輸入狀態**:`App.amounts: HashMap<String, String>`,存字串不是 `f64`,這樣才能保留「`100.`」「空字串」「`1,000`」這類輸入中間態。`parse_amount` 才做清洗與 parse。
|
||||
- **字型**:egui 預設字型沒中文,會變豆腐。`setup_fonts` 在執行期讀 OS 字型(Windows `msjh.ttc` / macOS `PingFang.ttc`,有 fallback 鏈),**刻意不 bundle 字型**以免 binary 胖 5–15 MB。如果在沒有這些字型的環境跑就會回到豆腐。
|
||||
- **時間**:`now_string` / `civil_from_days` 自己實作 UTC→台北時間換算與 Gregorian 日期計算,避免引入 `chrono` / `time` 把 binary 撐大。
|
||||
- **複製**:「複製」按鈕用 `ui.output_mut(|o| o.copied_text = raw)` 寫純數字(`3162.00`,不含 `NT$` / 逗號)到剪貼簿,設計是為了貼到 Excel 會被當數字。TWD label 另外有 `.selectable(true)` 讓使用者自行選取。
|
||||
- **複製**:「複製」按鈕用 `ui.output_mut(|o| o.copied_text = raw)` 寫純整數(`3163`,四捨五入到個位,不含 `NT$` / 逗號 / 小數)到剪貼簿,設計是為了貼到 Excel 會被當數字。TWD label 另外有 `.selectable(true)` 讓使用者自行選取。
|
||||
- **四捨五入**:TWD 一律顯示整數;Rust 用 `f64::round() as i64`(語言內建就是 ties away from zero),Kotlin 改用 `BigDecimal.setScale(0, HALF_UP)`(因為 `kotlin.math.round` 是銀行家捨入、行為不一致)。兩側要同步。
|
||||
|
||||
## 擴充時的常見改點
|
||||
|
||||
@@ -58,6 +59,7 @@ cd .. && zip -9 bot_rates.zip bot_rates.exe
|
||||
|------|------|
|
||||
| 新增幣別 | `TARGETS` 常數,加一行 `(代碼, 中文名)` 即可,其他地方會自動處理 |
|
||||
| 改成即期買入/現金匯率 | `fetch_rates` 裡的 `cols[13]` 換成對應 index(見上方資料抓取段) |
|
||||
| 顯示到小數點 | 改 `format_twd` / `format_twd_raw` 的 `v.round() as i64`(Rust)與 `setScale(0, HALF_UP)`(Kotlin),兩邊都要改 |
|
||||
| 視窗尺寸/不可 resize | `main()` 的 `ViewportBuilder` |
|
||||
| 預設輸入金額 | `App::new` 裡的 `"100".to_string()` |
|
||||
| 配色 | `update` 開頭的 `bg` / `card` / `rate_color` / `twd_color` 等常數 |
|
||||
|
||||
Reference in New Issue
Block a user