核心代碼
string s = "20";
double result = double.Parse(s) / 10;
string resultStr = result.ToString("F1"); // "2.0"
詳細步驟解析
| 步驟 | 代碼 | 說明 | 結果 |
| 1. 字符串解析 | double.Parse("20") | 轉為雙精度浮點數 | 20.0 |
| 2. 數學運算 | / 10 | 除以10實現小數點左移 | 2.0 |
| 3. 格式化輸出 | .ToString("F1") | 保留1位小數,標準格式 | "2.0" |
替代方案對比
// 方案一:字符串插值 (C# 6+)
string resultStr = $"{double.Parse(s) / 10:F1}";
// 方案二:字符串操作 (不推薦,無數學語義)
string resultStr = s.Insert(s.Length - 1, "."); // "2.0" - 僅適用於整數字符串
// 方案三:Decimal 類型 (金融/高精度場景)
decimal result = decimal.Parse(s) / 10m;
string resultStr = result.ToString("F1");
// 方案四:TryParse 安全解析
if (double.TryParse(s, out double value)) {
string resultStr = (value / 10).ToString("F1");
}
格式化字符串參考
| 格式 | 輸入 2.0 | 輸入 2.5 | 說明 |
| F1 / F2 | 2.0 / 2.00 | 2.5 / 2.50 | 固定小數位 |
| N1 / N2 | 2.0 / 2.00 | 2.5 / 2.50 | 帶千分位分隔符 |
| G / R | 2 / 2 | 2.5 / 2.5 | 通用/往返格式 |
| P1 | 200.0% | 250.0% | 百分比格式 |
異常處理最佳實踐
public string ConvertToDecimalString(string input, int divisor = 10, int decimals = 1) {
if (string.IsNullOrWhiteSpace(input)) return "0".PadRight(decimals + 2, '0');
if (double.TryParse(input, out double value)) {
double result = value / divisor;
return result.ToString($"F{decimals}");
}
// 記錄異常日誌
return "NaN";
}