> Tous les forumsAutres langages

 Javascript et arrondi décimalesSujet résolu
Statut du sujet : RESOLU Imprimer
 Mimile
  Posté le 28/08/2008 @ 13:39  
 Astucien


3064 Messages

Salut

Je rédige (petit à petit) ma page perso en xHTML + CSS avec inclusion de scripts Javascripts recueillis ça et là sur le net.

J'ai trouvé un script que me permet d'afficher la date et l'heure en temps réel.

Je voudrais y ajouter le jour de l'année et j'ai trouvé ce script qui donne un assez bon résultat :

<script>

function getQuantieme()
{
//Déclaration des deux dates nécessaires.
var dateCourante = new Date();
var dateDebutAnnee = new Date();

//On affecte à la date du début de l'année, le mois 1, le jour 1 et l'année courante


dateDebutAnnee.setDate(1);
dateDebutAnnee.setMonth(0);
dateDebutAnnee.setFullYear(dateCourante.getFullYear());

//On calcule la différence entre les deux dates. Le résultat étant en millisecondes, il faut convertir les millisecondes en jours

return quantieme = (dateCourante.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;

}
document.write(getQuantieme()); ---> et là, le jour de l'année s'affiche !

</script>

Le problème, c'est que l'affichage donne - par exemple pour aujourd'hui, 240ème jour de l'année - la valeur 240.95833333333334, ce qui ne fait pas sérieux à l'ouverture de ma page :

aujourd'hui, nous sommes le 240.95833333333334ème jour de l'année !

Donc, j'ai fait quelques recherches, et j'ai trouvé qu'il existait une fonction mathématique permettant d'arrondir les décimales.

Il s'agit de math.round qui arrondit au nombre le plus proche et de math.floor qui supprime purement et simplement les décimales et c'est évidemment celle-ci qui m'intéresse.

Le problème, c'est que j'ai essayé:

math.floor(quantieme);

math.floor(getQuantieme())

J'ai positionné chacune de ces commandes, tantôt dans le calcul de la fonction juste avant le } final de la fonction, tantôt juste après, mais ça ne donne rien !

Soit le jour ne s'affiche plus du tout, soit il continue à afficher 240.95833333333334

Ce qui m'échappe, c'est comment l'instruction "return quantieme ..." peut ensuite affecter le résultat de la fonction getQuantieme().

A avis, getQuantieme() n'est pas une valeur numérique (bien que ce soient des chiffres qui soient affichés) et la commande math.floor est sans effet pour cela.

Il faudrait dès lors transférer le contenu de getQuantieme() dans une variable numérique sur laquelle on pourrait ensuite opérer avec math.floor mais j'ignore comment faire.

Peut-être aussi que je dis une grosse connerie ?

Faut dire que je suis archi débutant et que j'apprends tout seul dans mon coin.

Merci de vos conseils.


Amicalement,

 Afficher le profil de Mimile Envoyer un message privé à Mimile
 
 
Publicité
 Mimile  Posté le 28/08/2008 à 15:26  
Astucien


3064 Messages

OK j'ai trouvé tout seul :

une légère modification de l'instruction "return" a suffi :

//On calcule la différence entre les deux dates. Le résultat étant en millisecondes, il faut convertir les millisecondes en jours
quantieme = (dateCourante.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;
return quantieme = Math.floor(quantieme)

au lieu de :

//On calcule la différence entre les deux dates. Le résultat étant en millisecondes, il faut convertir les millisecondes en jours

return quantieme = (dateCourante.getTime() - dateDebutAnnee.getTime()) / (24 * 3600 * 1000)+1;

En fait, j'ai finalement compris que l'instruction "return" transférait la valeur de "quantieme" dans "getQuantieme()" et donc qu'il fallait d'abord faire l'opération d'arrondi avant le "return".

Merci quand même à ceux qui ont réfléchi au problème.

Amicalement,



Afficher le profil de Mimile Voir la configuration de MimileEnvoyer un message privé à Mimile
 Revenir en haut de la page
 alilou2  Posté le 01/09/2008 à 20:56  
Petit astucien


863 Messages
Message original par Mimile

Salut

Faut dire que je suis archi débutant et que j'apprends tout seul dans mon coin.

bonsoir mimile.

si avec ce magistral raisonnement que tu viens de donner,tu te considères encore comme archi débutant,alors je voudrai bien savoir,moi qui suis néophyte sur toute la ligne,comment on définit un pro en informatique.

très bonne soirée.

Afficher le profil de alilou2 Voir la configuration de alilou2Envoyer un message privé à alilou2
  Revenir en haut de la page
 Mimile  Posté le 02/09/2008 à 22:52  
Astucien


3064 Messages

Salut Alilou

Merci pour ton message.

Une seule solution : il faut s'accrocher et chercher ...

Le net est une formidable source mais il faut aussi avoir un peu de chance pour trouver les "bons" sites et savoir faire le tri.

Le problème, quand on est un bon professionnel dans son domaine et qu'on veut rédiger un tutoriel à l'usage de néophytes, c'est de se souvenir de l'époque où, soit-même, on n'y connaissait rien ou pas grand'chose et de se remettre à ce niveau pour expliquer le b-a -> ba de la discipline.

Beaucoup de tutoriels sont créés par des personnes - dévouées, certes - qui ont oublié cela, ce qui fait qu'après 2 minutes de lecture, on est largué et on décroche.

C'est la grande difficulté de l'enseignement, en générale.

Pour ce qui me concerne, en matière de création de site Web, j'ai découvert avec le plus grand intérêt celui-ci qui m'a permis de démarrer la création de ma page perso (non encore en ligne) qui commence, petit à petit, à prendre forme.

Il ne se limite d'ailleurs pas à ce domaine et, à mon avis, il s'agit d'un des meilleurs sites qui existe en langue française pour ce qui est d'aider les débutants.

Amicalement,



Modifié par Mimile le 02/09/2008 23:56
Afficher le profil de Mimile Voir la configuration de MimileEnvoyer un message privé à Mimile
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte



Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsAutres langages

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page