| 特性 | C 語言 | Java |
|---|---|---|
| 整數最大精度 | long long(8 字節,-2⁶³ ~ 2⁶³-1) | BigInteger 任意精度(受限於內存) |
| 浮點數最大精度 | long double(通常 80/128 位) | BigDecimal 任意精度(受限於內存) |
| 溢出行為 | 未定義/環繞 | 拋異常或自動擴展(BigInteger) |
#include <stdio.h>
#include <limits.h>
int main() {
long long max = LLONG_MAX;
printf("Max long long: %lld\n", max);
// max + 1 會溢出環繞為負數
return 0;
}
import java.math.BigInteger;
public class Demo {
public static void main(String[] args) {
BigInteger big = new BigInteger("99999999999999999999999999999999999999");
BigInteger bigger = big.multiply(big);
System.out.println("Result digits: " + bigger.toString().length());
}
}
BigInteger/BigDecimal,金融、科學計算首選。BigDecimal 構造時優先用字符串構造器,避免 `double` 二進制誤差帶入。C 語言緊貼硬件,精度固定;Java 提供標準庫級任意精度類,開發效率與安全性更高。選型時根據業務精度需求權衡。