2010-03-29 12 views
47

Basta chiedersi in php, se fosse possibile convertire una stringa in doppia. Sto usando un servizio web finanziario che fornisce un prezzo come una stringa. Ho davvero bisogno di elaborare questo come una doppia e mi chiedevo come avrei convertirloConverti una stringa in doppia: è possibile?

grazie

+26

** Non utilizzare il virgola mobile per il codice di transazione monetaria. ** – kennytm

+1

che cosa dovrei fare con esso allora? – csU

+4

Numeri interi. Usa centesimi o unità più fini. – kennytm

risposta

86

Basta usare floatval().

Es .:

$var = '122.34343'; 
$float_value_of_var = floatval($var); 
echo $float_value_of_var; // 122.34343 

E nel caso in cui si chiedono doubleval() è solo un alias per floatval().

E come dicono gli altri, in un'applicazione finanziaria, i valori float sono fondamentali in quanto non sufficientemente precisi. Per esempio. l'aggiunta di due float potrebbe causare qualcosa come 12.30000000001 e questo errore potrebbe propagarsi.

+0

Funziona alla grande in 5.4 e disabilita gli avvisi stringa + stringa in IDE – Shane

2

Utilizzare doubleval(). Ma sii molto cauto nell'usare i decimali nelle transazioni finanziarie e convalidare attentamente l'input dell'utente molto.

13

Per matematica di precisione arbitraria, PHP offre il calcolatore binario che supporta numeri di qualsiasi dimensione e precisione, rappresentati come stringhe.

$s = '1234.13'; 
$double = bcadd($s,'0',2); 

PHP: bcadd

+0

20 anni di lavoro con PHP e ancora nuove funzioni interessanti! +1! –

0

Perché floatval l'opzione migliore per i dati di confronto finanziari? bc funziona solo con precisione per trasformare le stringhe in numeri reali.