[英]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.