Similar Threads:
1.print flips to scientific notation when integer exceeds 15 decimal digits
Although I've used perl for many years, I've just been surprised (in the
unpleasant sense) by a recent event. Given a variable, say "$int",
which is a growing integer, I would expect "print $int" to print it as a
simple integer; indeed it usually does so. But when its size takes it
from 15 decimal digits to 16 decimal digits, that "print" flips the
output into scientific notation:
999999999999997
999999999999998
999999999999999
1e+15
1e+15
Ouch. The surprise is especially nasty when this output data is then
used as input data for another program that expects an integer.
This is consistent across a variety of OSes (although all perl 5.8.8).
I eventually managed to track down a way to achieve the desired result
with a non-obvious "printf" format. (I leave that, and its clear
user-oriented explanation, as an exercise for the reader!)
I'm not aware of any documentation about this surprise. Is this a
program bug or a documentation bug? (Or a self bug?)
Is there a more appropriate forum than "beginners@..." to raise this?
--
: David Lee
: ECMWF (Data Handling System)
: Shinfield Park
: Reading RG2 9AX
: Berkshire
:
: tel: +44-118-9499 362
: email: XXXX@XXXXX.COM
2.Convert Scientific Notation to decimal equivalent
How can I detect this, I have been running some code for a few days to develop some files and ran into the situation where I am getting the following data for input:
14.95313 14.45312 0
14.95313 1.570813E-015 0
14.95313 -14.45313 0
-14.95313 -28.90625 0
-14.95313 -14.45313 0
-14.95313 1.570813E-015 0
-14.95313 14.45312 0
14.95313 -28.90625 0
0 -28.90625 0
-14.95313 28.90625 0
0 28.90625 0
14.95313 28.90625 0
And my code is skipping some lines as it checks for any erroneous data:
next if grep (/[^0-9.-]/, @data);
But that thinks the scientific notation is bad. I searched the net and didn't find anything. How can I match this specific pattern and convert it?
Thanks!
jlc
3.Number with More then 15 Digits.
Hi
$a = 1234567890123456789;
printf ("%0.0f\n", $a);
Out Put is
1234567890123456800
which is wrong can any one let me know how do we handle
Digits More than 15 digits ..
Regards
Govardhan MV
4.Newbie quesion: Scientific notation
Anno Siegel wrote:
> < XXXX@XXXXX.COM > wrote in comp.lang.perl.misc:
> > Hi,
> >
> > I'm trying to upload some data into a MySQL database.
> >
> > Could someone please advise me how I handle scientific notation?
> >
> > What I have sofar:
> >
> > -------
> > The data (pt, x)
> >
> > P1 4.50015068000000D-004
> > -------
> >
> > My regex expressions, I've been experimenting with:
> >
> > regex1: P\d+\s+(-?([0-9]+(\.[0-9]*)?|\.[0-9]+))/)
> ^ ^^
> Are these supposed to be regex delimiters?
>
> > does not catch the scientific notation
>
> Of course not. What makes you think it would?
>
> > regex2: P\d+\s+([+-]?(\d+(\.\d*)?|\.\d+)([eEdD][+-]?\d+))/)
> > does catch the scientific notation. I then say,
> > $number = $1;
>
> For matching numbers with regular expressions, see perldoc -q "is a
number".
> Follow the pointers you find there.
Ah, this helps alot thanks! I just didn't find that before.
>
> > -------
> > # Insert data
> > $dbh->do("INSERT INTO data(x) VALUES (?)",undef, $number);
> > -------
> >
> > How do I upload the number to the database? If I do it as above it
is
> > incorrect.
>
> Incorrect how? Is the data rejected by the database? Is it accepted
> but not the values you expect it to be? Be specific.
Well the number it uploads is not the float, in this case double, that
I want it to be. I'll need to do a strtod.
>
> Anno
Martin.
5.Newbie quesion: Scientific notation
Hi,
I'm trying to upload some data into a MySQL database.
Could someone please advise me how I handle scientific notation?
What I have sofar:
-------
The data (pt, x)
P1 4.50015068000000D-004
-------
My regex expressions, I've been experimenting with:
regex1: P\d+\s+(-?([0-9]+(\.[0-9]*)?|\.[0-9]+))/)
does not catch the scientific notation
regex2: P\d+\s+([+-]?(\d+(\.\d*)?|\.\d+)([eEdD][+-]?\d+))/)
does catch the scientific notation. I then say,
$number = $1;
-------
# Insert data
$dbh->do("INSERT INTO data(x) VALUES (?)",undef, $number);
-------
How do I upload the number to the database? If I do it as above it is
incorrect.
Thanks your help.
Martin.
6. Activestate PERL and ASE 15 OCS 15
7. Need help converting Perl to Ruby (detecting integers and decimals in strings)
8. Need > 15 digits precision without big performance hit