php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12505 array_sum function total calculate error
Submitted: 2001-08-01 04:02 UTC Modified: 2001-08-03 15:15 UTC
From: omeroz at kamilkoc dot com dot tr Assigned: jeroen (profile)
Status: Closed Package: Arrays related
PHP Version: latest CVS (08/01/01) OS: Red Hat Linux 6.1
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
9 - 8 = ?
Subscribe to this entry?

 
 [2001-08-01 04:02 UTC] omeroz at kamilkoc dot com dot tr
$tt=array(382478633,367687181,452504275,471367521,848270658,1181944543);
$total_tt=array_sum($tt);
echo "Total_tt=".$total_tt;

// Prints  Total_tt=-590714485

Must be 3704252811.



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-01 05:56 UTC] jmcastagnetto@php.net
The problem is with the typecasting to LONG, if you use the code:

<?php
$tt=array(382478633.0,367687181.0,452504275.0,471367521.0,848270658.0,1181944543.0);
echo array_sum($tt)."\n";
?>

The result is the correct one (3704252811)

Solution would be to

1) use floating point representation for bign numbers in PHP code (add caveat to the manual perhaps?)

or

2) check that the array_sum result is nor overflowing LONG in the C code implementation and bump the type to DOUBLE if it does.

second option would be better IMHO
 [2001-08-01 08:36 UTC] andy@php.net
status -> analyzed
 [2001-08-01 16:55 UTC] jeroen@php.net
Hm, same problem as the other overflow-things. Assigned to myself.

Are there other dangerous functions like this anywhere?
 [2001-08-03 15:15 UTC] jeroen@php.net
Fixed in CVS, will be in 4.0.7
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Apr 20 05:01:27 2024 UTC