The Arcive of vBulletin Modifications Site. |
|
|
#1
|
||||
|
||||
|
Hey gurus, can anyone shed some light on how to take a string and turn it into a float? The catch is that I need to take into considerations the users international prefs like using a comma for decimal separator and a decimal for thousands separator versus the standard English version which is opposite to that.
The user may enter: 1999 or 1999.49 or 1999,49 or 1,999.49 or 1.999,49 or 1,999.5 How can I translate this to 1999.00, 1999.49 and 1999.50 respectively? Thanks |
|
#2
|
|||
|
|||
|
Try number_format:
Code:
$variable = '5,25';
if (strpos($variable, ','))
{
$variable = str_replace(array('.',','), array('','.'), $variable);
}
$variable = number_format($variable, 2, '.', '');
|
|
#3
|
||||
|
||||
|
Thanks, just tried it and here are my results:
1,234.56 = 1.00 1234.56 = 1,234.56 1234.5 = 1,234.50 1,234.5 = 1.00 1,2345 = 1.00 1234,56 = 1,234.00 1234,5 = 1,234.00 1.234,56 = 1.23 1.234,5 = 1.23 The problem is that I dont know how the user is entering the data unless there is some way I can grab that info from vb ![]() EDIT: Hold on, you just changed your post Let me check it out nowOk. The problem with the above is if someone enters 1,345.5 it will give me 1.3345.5 ![]() BTW: Thanks for your time! BTW: Here are my revised figures based on number_format($var, 2, '.','') 1,234.56 = 1.00 1234.56 = 1234.56 1234.5 = 1234.50 1,234.5 = 1.00 1,2345 = 1.00 1234,56 = 1234.00 1234,5 = 1234.00 1.234,56 = 1.23 1.234,5 = 1.23 |
|
#4
|
|||
|
|||
|
Yeah, I see, working on a new one.
![]() Okay, try the below, both with and without the following commented: Code:
// $locale_info['decimal_point'] = ','; Code:
<?php
$variables = array(
'1999',
'1999.49',
'1999,49',
'1,999.49',
'1.999,49',
'1,999.5'
);
$locale_info = localeconv();
foreach ($variables AS $variable)
{
// $locale_info['decimal_point'] = ',';
$variable_orig = $variable;
if ($locale_info['decimal_point'] == ',')
{
$variable = str_replace(array('.',','), array('','.'), $variable);
}
else
{
$variable = str_replace(',', '', $variable);
}
$variable = sprintf("%01.2f", $variable);
echo $variable_orig.' => '.$variable."\n<br />\n";
}
?>
Code:
1999 => 1999.00 1999.49 => 1999.49 1999,49 => 199949.00 XX 1,999.49 => 1999.49 1.999,49 => 2.00 XX 1,999.5 => 1999.50 Code:
1999 => 1999.00 1999.49 => 199949.00 XX 1999,49 => 1999.49 1,999.49 => 2.00 XX 1.999,49 => 1999.49 1,999.5 => 2.00 XX |
![]() |
|
|
| X vBulletin 3.8.12 by vBS Debug Information | |
|---|---|
|
|
More Information |
|
|
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|