StormTheGates Posted April 3, 2008 Share Posted April 3, 2008 I run a game and one of the features is Russian Roulette. The problem Ive been having is that when a user wins they get 2x their money. However if that value exceeds the max of a 32bit integer, 2.147 billion or so they loose the extra money they should have won. How can I rectify this? Thanks. Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/ Share on other sites More sharing options...
devstudio Posted April 3, 2008 Share Posted April 3, 2008 Switch to Euros?! If you have access to MySQL this may be of some help. http://www.biorust.com/tutorials/detail/256/en/ Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/#findComment-508213 Share on other sites More sharing options...
StormTheGates Posted April 3, 2008 Author Share Posted April 3, 2008 Seems kinda brutal on the mysql. Heres what my code looks like: $end = $money*2; mysql_query("UPDATE users set money='$end' WHERE username='$username'"); Cant get past 2,147,483,647 The money field on the database is an int. Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/#findComment-508215 Share on other sites More sharing options...
devstudio Posted April 3, 2008 Share Posted April 3, 2008 Should be able to do: mysql_query("UPDATE users SET money=money+money WHERE username='$username'"); -or- mysql_query("UPDATE users SET money=money*2 WHERE username='$username'"); MYSQL is probably better at it then php, because the value will never even be set in php's memory this way. Best, Nathan Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/#findComment-508219 Share on other sites More sharing options...
StormTheGates Posted April 3, 2008 Author Share Posted April 3, 2008 Thanks . I solved it by making the mysql a bigint. Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/#findComment-508239 Share on other sites More sharing options...
lordfrikk Posted April 3, 2008 Share Posted April 3, 2008 You can push the boundaries even further by using unsigned bigint, but you won't be able to use negative values afterwards. Link to comment https://forums.phpfreaks.com/topic/99329-breaking-2147-billion/#findComment-508241 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.