js、php、java、golang、python在大整数加减乘除运算的差异与不同

js、php、java、golang、python在大整数加减乘除运算的差异与不同

有时我们想要进行数学运算,其中涉及非常大的整数计算,这些计算超出了所有可用原始数据类型的限制。例如,100 的阶乘包含 158 位数字,因此我们不能将它存储在任何可用的原始数据类型中,今天我们分享一下js、php、java、golang、python在大整数加减乘除运算的差异与不同。

js、php、java、golang、python在大整数加减乘除运算的差异与不同

JAVASCRIPT

JavaScript在ES2020中新增了BigInt类型,可以直接用于大整数运算。示例:

<script type="text/javascript">
const a = BigInt("123456789123456789123456789123456789");
const b = BigInt("987654321987654321987654321987654321");

const sum = a + b;
const prod = a * b;
const div = a / b;
const mod = a % b;
alert(sum);
</script>

在更早版本中需要使用第三方库,如Long.js。

php

PHP需要使BcMath扩展或Arbitrary precision mathematics函数库来实现大整数运算。示例:

<?php
$a = "123456789123456789123456789123456789";
$b = "987654321987654321987654321987654321";

$sum = bcadd($a, $b);
$prod = bcmul($a, $b);
$div = bcdiv($a, $b);
$mod = bcmod($a, $b);
PHP的内置整数类型无法进行大整数运算。

JAVAJava使用BigInteger类来表示和操作大整数。示例:

import java.math.BigInteger;
public class HelloWorld {
    public static void main(String []args) {
        BigInteger a = new BigInteger("123456789123456789123456789123456789");
BigInteger b = new BigInteger("987654321987654321987654321987654321");

BigInteger sum = a.add(b);
BigInteger prod = a.multiply(b);
BigInteger div = a.divide(b);
BigInteger mod = a.mod(b);
       System.out.println(sum);
    }
}
//按快捷键CTRL+K让AI帮你编写或修改代码

Golang

Golang使用内置的big.Int类型直接进行各种大整数运算。示例:

		
		
package main
import (
    "fmt"
    "math/big"
)

func main() {

a := big.NewInt(2188824200011112223)  
b := big.NewInt(2131234354353454354)

sum := big.NewInt(0).Add(a, b)  
prod := big.NewInt(0).Mul(a, b)
div := big.NewInt(0).Div(a, b)  
mod := big.NewInt(0).Mod(a, b)

    fmt.Println(sum)
    fmt.Println(prod)
    fmt.Println(div)
    fmt.Println(mod)
}
	

Python

Python使用decimal模块进行大整数运算。示例:

from decimal import Decimal

a = Decimal("123456789123456789123456789123456789")
b = Decimal("987654321987654321987654321987654321")

sum = a + b
prod = a * b
div = a / b
mod = a % b

Python的int类型无法进行准确的大整数运算。

总结来说,JavaScript、JavaGolang和Python都有较好的大整数支持,PHP相对较弱,需要依赖扩展库。各语言的实现思路都是使用字符串模拟大整数运算。

Golang的大整数运算通过其大整数类型big.Int的指针优化,性能较好。JavaScript的BigInt也是一种原生类型,易于使用。

{{collectdata}}

网友评论0