Comment obtenir un entier dont la valeur est supérieure à la valeur entière maximale
Je sais qu'en Java un int peut obtenir une valeur de 2 147 483 647. Mais j'en veux plus de valeur que cela. J'ai une formule pour l'exemple:
double x = a/(b*c);
De sorte que le dénominateur (b*c) peut atteindre 10^10 ou peut-être même plus que cela. Mais chaque fois que j'exécute la formule, la valeur est toujours limité à 2 147 483 647. Je le sais parce que x doit toujours être inférieure à 1.0.
P/S: Même variable "a" peut aussi atteindre 10^10 si certaines conditions sont remplies.
a,b,c sont des nombres entiers.
Êtes-vous à l'aide d'un int ou un double? Lorsque vous exécutez la formule, et toutes les variables sont doubles, vous ne devriez pas atteindre cette limite.
OriginalL'auteur Nexus | 2013-07-02
Vous devez vous connecter pour publier un commentaire.
Puisque vous l'avez demandé, voici une
BigInteger
exemple:Où
"yourNumberInStringForm"
est une option de signe et chiffres uniquement (pas d'espace ou une virgule). Par exempleBigInteger z = new BigIntger("-3463634");
NB:BigInteger
va renvoyer en fait unlong
pour vous si votre numéro est dans sa gamme.longs
fin enL
, comme dans:La longueur maximum pour un
long
est: 9,223,372,036,854,775,807. Si vos numéros sont va être moins que cela, il va faire de votre vie un ton plus facile à utiliserlong
ouLong
, son emballage, surBigInteger
. Depuis, leslong
, vous n'avez pas à utiliser des méthodes de division/multiplication, etc.Non, j'ai fait un edit.
BigInteger
sera de retour d'unelong
pour vous lorsque votre nombre est plus petit qu'unlong
. Traiter aveclongs
est beaucoup plus facile queBigInteger
. Étant donné que vos numéros sont moins que le maxlong
, vous devez utiliserlong
surBigInteger
.OriginalL'auteur Steve P.
Max int valeur est un langage java constante. Si vous voulez des nombres plus grands que ce
int
fournit, l'utilisation long. Si vous avez besoin d'entiers plus grands que ceint
etlong
fournir, vous pouvez utiliserBigInteger
:BigInteger
est immuable commeLong
etInteger
, mais vous ne pouvez pas utiliser les propriétés de l'opérateur de symboles. Au lieu d'utiliser l' les méthodes fournies par la classe.Je remarque aussi que vous êtes de se retrouver avec un
double
. Si c'est d'accord pour utiliser des doubles tout au long de votre formule, il est intéressant de noter que leur valeur max est:1.7976931348623157 E 308
Lire plus sur le langage java constantes.
OriginalL'auteur djeikyb
Utiliser un long type, encore un type entier, mais sa valeur maximale est supérieure à int
OriginalL'auteur morgano
essayer cette
a et c seront en fonte à double automatiquement par java. Voir http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.1.2 Si l'un des deux opérandes est de type double, l'autre est converti en double.
OriginalL'auteur Evgeniy Dorofeev