簡體   English   中英

Java Math類型轉換

[英]Java Math type casting

所以我有以下程序:

import java.lang.Math;

public class Test{
    public static void main(String[] args) {
        int value = (int)Math.pow(11,11);
        System.out.println(value);
    }
}

我想將11的整數值打印為11的冪。我知道Math.pow(11,11)將返回一個雙精度的2.85311670611E11。 但是,當我將其類型轉換為int時,我會得到2147483647,這顯然是不正確的。

那么為什么會這樣呢? 我該如何解決?

謝謝

在這種情況下,您必須使用Long。

作為有符號整數的int,如果是無符號的,則只能是最大為2 ^ 32的數字,也可以是32位數字,也就是說,其限制是從0到2,147,483,647,這只是給您限制。

嘗試使用Long對象,即2 ^ 64,它將為您提供正確的答案。

這是int類型的上限,您可以使用long代替,也可以在java.math.BigInteger嘗試BigInteger ,它永遠不會溢出。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM