Domanda

Sto cercando di utilizzare un intero a 64 bit hardcoded in una variabile stringa.

semplificazioni rese voglio fare qualcosa di simile:

$i = 76561197961384956;
$s = "i = $i";

che dovrebbe sfociare in s essere:

i = 76561197961384956

Questo non significa, ovviamente, funziona come PHP gettato grandi numeri interi a galleggiare, quindi number_format() è:

i = 7.65611979614E+16

Mentre diversi altri metodi come la fusione, ecc falliscono, ho trovato <=> e usarlo in questo modo:

$s = "i = " . number_format($i, 0, '.', '');

Ma questo si traduce in <=> essere:

i = 76561197961384960

Sembra un problema di approssimazione, ma come risolvere questo problema?

È stato utile?

Soluzione

Stai perdendo la precisione l'assegnazione, non sulla conversione di stringa. Se il valore di questa variabile è effettivamente codificato, e non si può cambiare la situazione, non c'è niente che puoi fare.

Una linea simile:

$i = 76561197961384956;

perderà sempre di precisione. Se è necessario mantenere il tutto, conservarlo in una stringa, non è possibile memorizzare come un int così e mantenere tutte le cifre.

Altri suggerimenti

Credo che l'unico modo è quello di utilizzare la bcmath funzioni.

  

Per la matematica a precisione arbitraria PHP offre il Binary Calculator che supporta numeri di qualsiasi dimensione e precisione, rappresentati da stringhe.

E 'il tuo $i che è sbagliato, non la conversione di stringa - PHP utilizza 32 bit int internamente

.

per ora solo modo per fare grandi matematica intero in php è quello di utilizzare le estensioni bcmath o GMP che gestiscono grandi numeri come stringhe. interi a 64 bit vengono piallate in php6.

in modo che quando si utilizzano grandi numeri interi le precipitava stringa o si perde precisione su assegnazione (fusione automatica per galleggiare) e poi utilizzare su delle librerie matematiche stringa di elaborare ulteriormente il proprio numero.

Hai provato a usare la funzione intval del PHP ()?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top