在 Flutter 3.35.2 (對應 Dart 2.19 及以上版本) 中,將數字轉換為字符串主要依賴于 Dart 語言本身提供的原生方法。這些方法穩定且向后兼容。下面我為你介紹幾種主要的方法和案例。
🔢 數字轉字符串的基本方法
方法名 | 適用類型 | 描述 | 常用場景 |
---|---|---|---|
toString() | int , double | 將數字直接轉換為其字符串表示形式 | 通用轉換,整數、小數都需要 |
toStringAsFixed(int n) | double | 將小數轉換為字符串,并固定保留 n 位小數(會四舍五入) | 金額、數量、百分比等需要固定精度的場景 |
toStringAsExponential(int n) | double | 將數字轉換為科學計數法表示的字符串,其中 n 是小數點后的位數 | 極大或極小的數字 |
toStringAsPrecision(int n) | double | 將數字轉換為字符串,并保留 n 位有效數字 | 需要特定有效位數的場景,結果可能是指數或小數形式 |
💡 補充說明
int
類型:最常用的就是toString()
方法。double
類型:除了toString()
,其他幾個以toStringAs
開頭的方法提供了更精確的格式控制。- Dart 中所有類型(包括
int
和double
)的轉換方法都非常穩定,通常不會隨 Flutter 小版本更新而改變。因此,在 Flutter 3.35.2 及以上版本中,這些方法都是完全適用且可靠的。
🛠? 代碼案例
1. 使用 toString()
方法
這是最直接的方法,適用于整數和浮點數。
// 整數轉字符串
int myInt = 2025;
String intString = myInt.toString();
print(intString); // 輸出: 2025// 浮點數轉字符串
double myDouble = 3.1415926535;
String doubleString = myDouble.toString();
print(doubleString); // 輸出: 3.1415926535
2. 使用 toStringAsFixed()
方法控制小數位數
適用于需要固定小數點后位數的場景,例如金額計算。
double price = 99.999;
String fixedString2 = price.toStringAsFixed(2); // 保留兩位小數,會四舍五入
print(fixedString2); // 輸出: 100.00double pi = 3.14159;
String fixedString = pi.toStringAsFixed(2); // 保留兩位小數
print(fixedString); // 輸出: 3.14double salesRate = 0.256;
String percent = (salesRate * 100).toStringAsFixed(1) + '%'; // 計算并格式化為百分比
print(percent); // 輸出: 25.6%
3. 使用 toStringAsExponential()
方法轉換為科學計數法
適用于極大或極小的數字。
double largeNumber = 1234567890.0;
String exponentialString = largeNumber.toStringAsExponential(3);
print(exponentialString); // 輸出: 1.235e+9 (保留3位小數)
4. 使用 toStringAsPrecision()
方法保留有效數字
確保數字具有指定的有效數字位數。
double preciseDouble = 1.23456789;
String precisionString = preciseDouble.toStringAsPrecision(4);
print(precisionString); // 輸出: 1.235 (保留4位有效數字,會四舍五入)
5. 數值格式化(使用 intl
包)
對于更復雜的格式化需求,如添加千位分隔符,可以使用 Dart 的 intl
包。
首先,在 pubspec.yaml
中添加依賴:
dependencies:intl: ^0.18.1
然后使用 NumberFormat
類:
import 'package:intl/intl.dart';int population = 1234567890;
String formattedPopulation = NumberFormat.decimalPattern().format(population);
print(formattedPopulation); // 輸出會根據本地化設置變化,例如: 1,234,567,890 (英語環境)double complexNumber = 1234.5678;
String formattedComplex = NumberFormat("#,###.##").format(complexNumber);
print(formattedComplex); // 輸出: 1,234.57 (四舍五入到兩位小數,并添加千位分隔符)
?? 注意事項
-
處理空值(Null Safety):Flutter 3.35.2 完全支持 Dart 的空安全。如果你的數字變量可能為
null
,需要進行空值判斷。int? possibleNullInt = null; String result = possibleNullInt?.toString() ?? '0'; // 如果為null,則使用默認值'0' print(result); // 輸出: 0
-
區域設置(Locale):
toString()
和toStringAsFixed()
等方法產生的字符串格式(例如小數點用.
還是,
)是固定的。如果你的應用支持國際化,顯示數字時(尤其是小數和千位分隔符)應使用intl
包中的NumberFormat
來根據用戶區域設置進行格式化。// 在德國 locale 中,小數點常用逗號表示 String germanFormat = NumberFormat.decimalPattern('de').format(1234.56); print(germanFormat); // 輸出: 1.234,56
📝 總結
在 Flutter 3.35.2 及以上版本中,數字轉字符串最常用的是 toString()
和 toStringAsFixed()
方法。對于國際化應用中的數字格式化,建議使用 intl
包。
希望這些信息和案例能幫助你順利進行數字和字符串之間的轉換。