PHP String to Float
W ogóle nie znam PHP i mam szybkie pytanie.
Mam 2 zmienne @pricePerUnit i @invoicedUnits. Oto kod, który ustawia te wartości na wartości:
$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);
Jeśli to wypowiem, otrzymuję poprawne wartości. Powiedzmy 5000 sztuk fakturowanych i 1,00 za cenę.
Teraz muszę pokazać całkowitą kwotę wydaną. Gdy pomnożyłem te dwa Razem, to nie działa (zgodnie z oczekiwaniami, są to ciągi).Ale nie mam pojęcia jak parsować/cast / konwertować zmienne w PHP.
Co mam zrobić?5 answers
$rootbeer = (float) $InvoicedUnits;
Powinienem zrobić to za Ciebie. Zobacz Typ-żonglerka . Powinieneś również przeczytać konwersję łańcuchów na liczby .Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-21 01:11:42
Chcesz non-locale-aware floatval
Funkcja :
Float floatval ( mixed $var) - pobiera wartość float łańcucha znaków.
Przykład:
$string = '122.34343The';
$float = floatval($string);
echo $float; // 122.34343
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-21 13:28:35
Cóż, jeśli użytkownik napisze 1,00,000 to floatvar pokaże błąd. So -
floatval(preg_replace("/[^-0-9\.]/","",$input));
To jest o wiele bardziej wiarygodne.
Użycie:
$input = '1,03,24,23,434,500.6798633 this';
echo floatval(preg_replace("/[^-0-9\.]/","",$input));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-20 01:02:27
Radzenie sobie ze znacznikami w floatach jest zadaniem nietrywialnym. W notacji Angielskiej/amerykańskiej formatujesz tysiąc plus 46 * 10-2:
1,000.46
Ale w Niemczech zmieniłbyś przecinek i punkt:
1.000,46
To sprawia, że naprawdę trudno odgadnąć odpowiednią liczbę w aplikacjach wielojęzycznych.
Zdecydowanie sugeruję użycie Zend_Measure z Zend Framework do tego zadania. Komponent ten przetworzy łańcuch znaków na zmiennoprzecinkowy przez język users.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-18 12:35:14
Użyj tej funkcji do wyświetlenia wartości float z dowolnego stylu tekstu:
function parseFloat($value) {
return floatval(preg_replace('#^([-]*[0-9\.,\' ]+?)((\.|,){1}([0-9-]{1,3}))*$#e', "str_replace(array('.', ',', \"'\", ' '), '', '\\1') . '.\\4'", $value));
}
To rozwiązanie nie zależy od ustawień regionalnych. Tak więc dla wejścia użytkownika użytkownicy mogą wpisywać wartości zmiennoprzecinkowe w dowolny sposób. Jest to bardzo pomocne np. gdy masz projekt, który jest tylko w języku Angielskim, ale ludzie na całym świecie go używają i może nie mieć na uwadze, że projekt chce kropki zamiast przecinka dla wartości float. Możesz wrzucić javascript do Miksa i pobrać przeglądarki domyślne ustawienia, ale nadal wiele osób ustawia te wartości na angielski, ale nadal wpisując 1,25 zamiast 1.25 (zwłaszcza, ale nie ograniczając się do branży tłumaczeniowej, badań i IT)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-30 11:06:49