parce que quand on en est à coder des flottants, il est temps de passer à un truc un peu moderne, style ruby ou python ?
Le 20 mars 2013 à 15:02, Christian Pélissier <christian.peliss...@onera.fr> a écrit : > Bonjour, > > Sous Solaris 10 ksh est un ksh88 dans lequel le type flottant n'existe > pas. > > ksh93 existe sous la forme du desktop korn de CDE. > Hélas c'est une version 93d ancienne qui comporte pas mal de bugs. > > On a par exemple 93t+ dans RHEL 6/CentOS 6/SL 6 et 93u dans Solaris > 11.1. Il est également présent dans SuSE. > > Par exemple celui-ci découvert en développant un soft pour repérer les > gros downloader qui dévorent la bande passante d'un proxy (analyse des > logs) : > > # /usr/dt/bin/dtksh > # typeset -F2 SCORE > # SCORE=2000000000.0 > > # echo $(( SCORE + 2000000000 )) > 4000000000 << OK > > # echo $(( SCORE + 2147483647 )) > 4147483647 << OK > > echo $(( SCORE + 2147483648 )) > -147483648 << faux : float + int = float > > # echo $(( SCORE + 5000000000 )) > 2705032704 << faux > > # echo $(( SCORE + 5000000000.0 )) << contournement > 7000000000 > > Si la valeur à ajouter est dans une variable SIZE on contourne le bug en > faisant : > > SIZE=$SIZE.0 > echo $(( SCORE + SIZE )) > > Si l'entier ajouté dépasse 2^31-1 dtksh fait n'importe quoi. > > Mais pourquoi donc Oracle ne backporte-t-il pas THE shell ksh93u dans > Solaris 10 beaucoup plus fiable que bash et consort qui sont pleins de > limitations !!! > > > > PS. > > Avec les ksh récents qui tiennent compte de la locale, il faut utiliser > . ou , pour le séparateur des décimales. > > > > -- > Christian Pélissier > Office National d'Études et de Recherches Aérospatiales > BP 72 92322 Chatillon > Tel: 33 1 46 73 44 19, Fax: 33 1 46 73 41 50 > > > -- > _______________________________________________ > Liste (Open)Solaris francophone > ug-fosug@opensolaris.org > http://www.mail-archive.com/ug-fosug@opensolaris.org/ -- _______________________________________________ Liste (Open)Solaris francophone ug-fosug@opensolaris.org http://www.mail-archive.com/ug-fosug@opensolaris.org/