abracadabraPDF › Forums › PDF – Général › Obtenir un nombre entier (arrondi) dans un champ
- Ce sujet est vide.
-
CréateurSujet
-
6 février 2017 à 17:44 #45592
Alpha47
MembreSalut à tous,
un problème simple, une solution simple
Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
Dans le champ B (nombre) remplissable :
– si le nombre saisi est inférieur à A, rien (passage au champ suivant)
– si le nombre et supérieur à A, affichage de A + message “vous en avez trop demandé”Est-ce possible en JavaScript et où le placer en validation ou calcul ?
Oui je suis nul mais je vais certainement comprendre le script proposé !Merci d’avance.
-
CréateurSujet
-
AuteurRéponses
-
6 février 2017 à 18:56 #62217
bebarth
Maître des clésbonjour,
A mettre en script de validation du champ B :Code:if(this.event.value > this.getField(“champA”).value) {
app.alert({cMsg:”Vous en avez trop demandé !”, nIcon:2});
this.event.value=””;
this.getField(“champB”).setFocus();
}@+
:bonjour:7 février 2017 à 09:47 #62218Alpha47
MembreBonjour bebarth
Ta réponse est parfaite mais je n’avais pas tout dit … (mea culpa, mea culpa, …)
Mon formulaire vient d’un version Excel où on utilise couramment les arrondis (quand ça nous arrange) du type ARRONDI((B12*4+4)/10;0) qui définit aussi le nombre de valeur après la virgule.
Mon champ A est évidemment le résultat d’un calcul qui donne par exemple 2,80. Alors le champ en forme nombre m’affiche bien 0 décimale, mais pour les calculs et utilisation dans les calculs le javascript utilise la valeur avec décimale.
Donc pour mon problème, je souhaite arrondir le résultat de mon calcul dans le champ A, parce que un choix de 3 est trop grand pour 2,8 …
La question est encore plus bête que la première :geek: C’est quoi la formule magique ? :Smiley08: :Smiley08:
Merci d’avance7 février 2017 à 12:03 #62219Merlin
Maître des clésCode:Math.round(n * 100) / 100;7 février 2017 à 13:01 #62220bebarth
Maître des clés…pas mieux !
@+
:bonjour:7 février 2017 à 13:10 #62221Merlin
Maître des clésCe monsieur nous explique pourquoi c’est mieux de faire autrement mais je ne suis pas certain d’avoir tout compris. :geek:
http://www.jacklmoore.com/notes/rounding-in-javascript/7 février 2017 à 14:18 #62222Alpha47
Membreje me suis probablement mal expliqué sur mon objectif
L’explication de jacklmore est lumineuse évidement, :doute: et j’en suis aveuglé … je plaisante !
Pardonnez mon incompétence, comment rédiger mon calcul de B pour obtenir un arrondi sans valeur après la décimale ?if( this.getField(“C”).value>=1)
{this.event.value = ((this.getField(“C”).value*4+4)/10);}
else
{this.event.value=””;}
if (event.value == “0”) {event.value = “”}Sur mon formulaire si C = 6, il m’affiche bien l’entier 3 (format Nombre sans décimal), mais en passant la souris dessus, il me montre que le résultat du calcul est 2,8 et pour la suite lorsque je demande 3 pour A, il me dit’ vous avez trop demandé’ (voir post initial en dessous résolu par bebarth)
Est-ce mieux dit ? :jerisjaune:
Merci d’avance à tous les deux7 février 2017 à 17:46 #62223bebarth
Maître des clésbonjour,
La problématique exposée par ce “Monsieur” est exacte ! La solution aussi puisqu’elle fonctionne…
Si on veut arrondir un nombre à deux décimales, on doit regarder la valeur de la troisième décimale : si cette troisième décimale est supérieure ou égale à 5, la deuxième décimale doit être incrémentée.
En ce qui concerne les exponentiels, c’est un peu loin pour moi et je lui fait confiance vu que sa formule fonctionne…En ce qui concerne le problème d’Alpha47, je suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…
J’ai donc fait un mélange, et j’espère qu’avec ces exemples il pourra faire exactement ce qu’il veut !
La formule “round” est en script de document.
@+
:bonjour:7 février 2017 à 17:56 #62224Merlin
Maître des clésje suis un peu perdu avec les champs “A”, “B” ou “C” et ce qu’il faut faire avec…
Merci, du coup je me sens moins seul. :geek:
7 février 2017 à 18:15 #62225Alpha47
MembreVous êtes vraiment super.
je crois que la bonne question eut été : quelle est la façon d’obtenir un nombre arrondi après un calcul ?
bebarth m’a révélé la fonction round et son emploi dans les exemples judicieux, merci merci :Smiley01: :Smiley01:
A bientôt8 février 2017 à 10:41 #62226Alpha47
MembreEncore moi ! Mon enthousiasme d’hier soir a été douché ce matin au moment de la mise en œuvre sur mon formulaire :Smiley02: :mur:
Ja travaille sur Acrobat Pro 10.1.6 sur Mac
Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth
Une fois la formule round en place sur mon formulaire, Acrobat refuse de me renvoyer quoi que ce soit, même sur des champs nouveaux propres nouvellement créés pour tester
Alors je me suis rabattu sur la formule initialement proposée “Math.round (n*100/100)” (que je ne savais pas introduire) et là EUREKA :extra: :extra: (je n’étais pas dans mon bain!) la valeur renvoyée est bien un entier sur mon formulaire !
Tout fonctionne bien dans la fourchette de valeur que j’utilise.
Je vous laisse le soin d’apporter une réponse éventuelle au dysfonctionnement sur mon ordi
NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”
Très très cordialement pour votre aide :bravo:8 février 2017 à 10:55 #62227Merlin
Maître des clésJe ne comprend pas, ça fonctionne ou ça ne fonctionne pas ?
:Euuuh: :doute: :Euuuh:NB suggestion : la titre de la discussion devrait être “Obtenir un entier dans un champ”
On est bien d’accord mais avec SMF changer le titre d’un sujet doit se faire dans chaque message, message par message… :tutut:
Alors on va garder l’actuel. :Smiley03:8 février 2017 à 10:58 #62228Merlin
Maître des clésSalut à tous,
un problème simple, une solution simple
Dans mon formulaire, j’ai un champ A (nombre) calculé automatiquement en fonction de valeurs saisies
Dans le champ B (nombre) remplissable :
– si le nombre saisi est inférieur à A, rien (passage au champ suivant)
– si le nombre et supérieur à A, affichage de A + message “vous en avez trop demandé”Est-ce possible en JavaScript et où le placer en validation ou calcul ?
Oui je suis nul mais je vais certainement comprendre le script proposé !Merci d’avance.
8 février 2017 à 11:02 #62229Alpha47
MembreOui Merlin, c’est OK pour moi,ça fonctionne avec Math.round merci :joker:
8 février 2017 à 11:31 #62230bebarth
Maître des clésbonjour,
Le formule round ne fonctionne pas sur mon formulaire mais parfaitement sur ton formulaire bebarth
A mon avis tu n’as pas placé la fonction en script de document…
Tu peux également la placer au début de ton script de calcul :Code:function round(value, decimals) {
return Number(Math.round(value+’e’+decimals)+’e-‘+decimals);
}
if(this.getField(“champC”).value>=1) {
this.event.value = round((this.getField(“champC”).value*4+4)/10,0);
} else {
this.event.value=””;
}
if (event.value == “0”) {event.value = “”}@+
:bonjour:8 février 2017 à 13:35 #62231Merlin
Maître des clésAlors on va garder l’actuel.
Comme seuls les imbéciles ne changent pas d’avis et comme je viens de me rendre compte que le nouvel habillage du forum ne répète pas le titre sur chaque message je l’ai changé quand même.
:geek:8 février 2017 à 13:51 #62232Alpha47
MembreBravo Melin, c’est mieux sans nul doute
Bonjour bebarth,
je vois que tu es aussi perfectionniste que moi :Smiley01:
Effectivement j’ai juste fait un copier/coller du script sans les deux premières lignes du code proposé = je vais essayerTu parles d’un script de document
Je ne crois pas que ce soit judicieux de mettre ce code en script document parce que seuls un ou deux champs sont concernés, mais à propos où placer ce script de document pour, par exemple, afficher un champ particulier à l’ouverture du document avec set.Focus() ?
cordialement8 février 2017 à 13:54 #62233Merlin
Maître des clésoù placer ce script de document… ?
“Script de document” c’est l’emplacement.
Il faut ajouter ta ligne de script après la déclaration des fonctions. -
AuteurRéponses
- Vous devez être connecté pour répondre à ce sujet.