Dart 內建數個函式庫,我們可以透過這些函式庫實作各種功能,數學相關函式庫便是其中之一。
import 'dart:math';Code language: JavaScript (javascript)
常用常數
print(pi); // 3.141592653589793 圓周率
print(e); // 2.718281828459045 自然常數
print(sqrt2); // √2 ≈1.4142Code language: PHP (php)
三角函數
sin() cos() tan() 參數:弧度。角度 ↔ 弧度轉換公式: 弧度 = 角度 × pi / 180
void trigDemo() {
assert(cos(pi) == -1.0);
int degrees = 30;
double radians = degrees * pi / 180;
double result = sin(radians);
// 浮點數不建議直接使用 == 比較,建議判斷差值絕對值
assert((result - 0.5).abs() < 0.01);
}Code language: Dart (dart)
最大值 / 最小值
assert(max(1, 1000) == 1000);
assert(min(1, -1000) == -1000);
亂數 Random
void randomDemo() {
final rand = Random();
double d = rand.nextDouble(); // [0.0, 1.0)
int i = rand.nextInt(10); // 0 ~ 9
bool b = rand.nextBool(); // true / false
// 加密安全亂數,適用密碼、金鑰相關場景
final secureRand = Random.secure();
}Code language: Dart (dart)
常用函式
sqrt(9); // 平方根 3.0
pow(2, 3); // 次方運算 2^3=8.0
log(e); // 自然對數
atan2(y, x); // 反正切,常用於座標角度計算Code language: Dart (dart)
完整範例
import 'dart:math';
void main() {
// 常數
print('pi = $pi');
print('e = $e');
// 三角函數
final rad30 = 30 * pi / 180;
print('sin30° = ${sin(rad30)}');
// max min
print('max(2,9) = ${max(2,9)}');
print('min(2,9) = ${min(2,9)}');
// 亂數
final r = Random();
print('0~9亂數整數:${r.nextInt(10)}');
print('[0,1)浮點數:${r.nextDouble()}');
print('隨機布林值:${r.nextBool()}');
}Code language: Dart (dart)
執行範例輸出
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
pi = 3.141592653589793
e = 2.718281828459045
sin30° = 0.49999999999999994
max(2,9) = 9
min(2,9) = 2
0~9亂數整數:9
[0,1)浮點數:0.08331912429354282
隨機布林值:falseCode language: JavaScript (javascript)
dart:math 函式庫
Previous: Class Modifiers 類別修飾子
Next: dart:convert 函式庫