Tutte le altre risposte non sono giuste, perché la divisione di PHP restituirà sempre valori float, come affermato chiaramente nel manuale ufficiale PHP: Arithmetic Operators, ad eccezione dei casi in cui due operandi sono entrambi interi che possono essere equamente divisi.
In effetti, la domanda è sbagliata: il codice dovrebbe produrre 0,923 ..., come previsto dall'interrogante.
Sarcasticamente, la risposta ridotta (proveniente da @ BulletProof47) è l'unica altra che NON è SBAGLIATA (ma anche priva di significato).Chissà cosa stava pensando, ma scommetto tutti sanno perché è stato bocciato: D
Nel caso in cui chi è interessato, la funzione sottostante che fa la divisione in php è div_function
, situato in Zend/zend_operators.c
, riportata di seguito:
ZEND_API int div_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) /* {{{ */
{
zval op1_copy, op2_copy;
int converted = 0;
while (1) {
switch (TYPE_PAIR(Z_TYPE_P(op1), Z_TYPE_P(op2))) {
case TYPE_PAIR(IS_LONG, IS_LONG):
if (Z_LVAL_P(op2) == 0) {
zend_error(E_WARNING, "Division by zero");
ZVAL_BOOL(result, 0);
return FAILURE; /* division by zero */
} else if (Z_LVAL_P(op2) == -1 && Z_LVAL_P(op1) == LONG_MIN) {
/* Prevent overflow error/crash */
ZVAL_DOUBLE(result, (double) LONG_MIN/-1);
return SUCCESS;
}
if (Z_LVAL_P(op1) % Z_LVAL_P(op2) == 0) { /* integer */
ZVAL_LONG(result, Z_LVAL_P(op1)/Z_LVAL_P(op2));
} else {
ZVAL_DOUBLE(result, ((double) Z_LVAL_P(op1))/Z_LVAL_P(op2));
}
return SUCCESS;
...
Ottengo '0.92307692307692' quando eseguo questo –
controlla il tuo php.ini per il conteggio decimale flottante forzato o la precisione qualcosa del genere non riesce a ricordare quale sia il suo nome. – Dave
Quale versione di PHP stai usando? 'php -v' o' phpinfo(); ' –