Java convertir flotteur en entier
Je veux faire une opération comme celle-ci : si les nombres réels sont comme 1.0 , 2.0 , 3.0 , je veux les enregistrer dans la base de données comme un entier (1,2,3 ), si ils sont comme 1.1 , 2.1 , ,3.44 , je les enregistrer en tant que float. quelle est la meilleure solution pour ce problème à l'aide de java ? Le champ correspondant dans la base de données est de type varchar.
C'est vraiment déroutant; demandez-vous comment utiliser les Float.toString(val)?
Êtes-vous sûr que les nombres à virgule flottante est vraiment la meilleure solution pour votre problème de domaine? Si vous voulez de la précision, vous devez utiliser BigDecimal
Êtes-vous sûr que les nombres à virgule flottante est vraiment la meilleure solution pour votre problème de domaine? Si vous voulez de la précision, vous devez utiliser BigDecimal
OriginalL'auteur Sawyer | 2010-02-02
Vous devez vous connecter pour publier un commentaire.
Juste essayer
int i = (int) f;
.EDIT : je vois le point de la question. Ce code peut fonctionner :
qu'en float string , mec ? vous convertir un float en int. ce n'est pas ce que je veux.
Effectivement cela fonctionne très bien : ce n'est pas la conversion de toutes les valeurs flottantes à ints. C'est le stockage de l'int valeur de "i" juste pour la comparaison avec la valeur flottante. Si c'est la même chose (c'est à dire qu'il se termine avec .0) ensuite, il retourne "je", sinon elle renvoie la valeur d'origine comme une Chaîne de caractères... @Tony, valToStore est une Chaîne de caractères. C'est ce que vous avez demandé...
c'est super , merci.
OriginalL'auteur fastcodejava
Le cas de la clause vérifie si le nombre est un nombre entier - c'est à dire si il est égal au résultat de l'arrondi à la valeur entière la plus proche.
Mais c'est très étrange exigence en effet, et peut-être vous devriez reconsidérer la nécessité d'une telle chose.
ah, oui, a raté le "nombre entier chaîne de caractères". merci
Vous voulez un 'si' test et de la conversion d'une Chaîne de caractères. Je pense que vous aurez du mal à trouver une solution plus rapide que Bozho.
pourquoi pensez-vous que ce n'est pas "rapide"?
non, il n'est pas 😉 Le compilateur transforme
L + ""
àFloat.toString(L)
OriginalL'auteur Bozho
Semble que vous souhaitez enregistrer des Chars avec pas de fuite nombres Entiers, tout en économisant sur ceux avec une importante fuite des numéros de Flotteurs. Je préfère juste l'enregistrer tout comme le Flotteur de la DB, mais c'est votre question, alors voici ma réponse:
C'est comment vous pouvez utiliser cette méthode:
Après cela, vous pouvez faire l'opération de base de données à l'aide de la variable oNumToSave.
OriginalL'auteur Garg Unzola
Pas sûr que ce soit la meilleure solution, mais vous pouvez essayer d'écrire une méthode comme ceci :
OriginalL'auteur Philippe