Despite seeming like a very basic procedure, this evening I found I had wasted half an hour, split between Googling for the answer and trying to work it out for myself.
I have a number that needs to be stored in a string format in PHP. However, I need to use this value at some point to run a calculation, for which I need the true value as opposed to the string. If I had just wanted a whole number the answer is very simple, use the PHP (int) method to convert it.
It is not that easy when you are working with decimals. Unless I am missing something (in which case feel free to embarass me in the comments below!) there is no easy way to do this. Here is what I came up with:
$string = "3.142"; // The source number, as a string
$a = explode(".",$string); // Split the string, using the decimal point as separator
$int = $a[0]; // The section before the decimal point
$dec = $a[1]; // The section after the decimal point
$lengthofnum=strlen($dec); // Get the num of characters after the decimal point
$divider="1"; // This sets the divider at 1
$i=0;
while($i < ($lengthofnum)) {
$divider.="0"; // Adds a zero to the divider for every char after the decimal point
$i++;
}
$divider=(int)$divider; // Converts the divider (currently a string) to an integer
$total=$int+($dec/$divider); // compiles the total back as a numeric value
If anyone knows of a quicker / cleaner / better / more funky way of doing this simple task please do let me know… if not then I hope this little snippet at least lets you avoid losing the half our of your life that I lost this evening!
UPDATE: Thanks to Xobman, who Twittered me this little gem:
Try $foo = “3.123″; $bar = (float) $foo;
LOL… low and behold, it works! That’ll teach me to post my (oh so clever!) code on the Interweb for all to see
Thanks Xobman!
Recent Comments