Double vs FLOAT - errore MathFloor poco chiaro - pagina 3

 

Si noti che il numero normalizzato quando viene emesso nel registro usando Print() può contenere più cifre decimali di quanto ci si aspetti. Per esempio,

poi nel commento lo stesso

 
fxsaber:
#define TOSTRING(A) #A + " = " + (string)(A) + " "

void OnStart()
{
  double Price1 = 105143;
  double Price2 = Price1 - 1 e-11;

  Print(TOSTRING(Price1) + TOSTRING(MathFloor(Price1)) +
        TOSTRING(Price2) + TOSTRING(MathFloor(Price2)) +
        TOSTRING(Price1 > Price2));
}
Risultato
Price1 = 105143.0 MathFloor(Price1) = 105143.0 Price2 = 105143.0 MathFloor(Price2) = 105142.0 Price1>Price2 = true
Non prendere alla lettera il doppio numero non impostato.

Grazie, devo aver trovato la soluzione giusta dopo tutto, ma ero preoccupato di un errore a causa dell'allineamento errato!

 

Il resto di un numero non normalizzato diviso per un altro numero non normalizzato, il risultato è in ogni caso non normalizzato.

Questa funzione dovrebbe essere eliminata del tutto dalla lingua, per non traumatizzare la psiche immatura.

 
Vladislav Andruschenko:

Forse ho trovato la soluzione giusta dopo tutto.

Sfortunatamente, il tuo codice è una dimostrazione di una completa incomprensione di ciò che stai facendo. Cercate di andare a fondo del problema.
 
Dmitry Fedoseev:

Il resto di un numero non normalizzato diviso per un altro numero non normalizzato, il risultato è in ogni caso non normalizzato.

Questa funzione dovrebbe essere eliminata del tutto dalla lingua, per non traumatizzare la psiche immatura.

Bene, tutto è normalizzato per me. È questo che è così divertente.
 
Vladislav Andruschenko:
Beh, per me va bene. Questa è la parte difficile.
Stai facendo conversioni inutili che ti fanno perdere segni.

Normalizza solo prima di usare direttamente i risultati dei tuoi calcoli. Evitare il più possibile tutte le conversioni di numeri e le conversioni in anticipo.
 
Andrey Dik:
State facendo conversioni inutili che causano la perdita di caratteri.
Questi sono già codici disperati..... L'ho fatto in modi diversi. Ma come detto sopra. Probabilmente a causa dell'errata presa stavo peccando sull'errore. Anche se anche queste variabili sono state glitchate nel codice.

Grazie a tutti per il vostro aiuto e i vostri suggerimenti. Ma tutto funziona chiaramente con il galleggiante.
 
Vladislav Andruschenko:
con float tutto funziona chiaramente.
Una delle peggiori raccomandazioni è quella di passare da double a float.
 
Vladislav Andruschenko:
Beh, per me va bene. Questa è la cosa divertente.
In quale parte del mondo è normale?
 
Vladislav Andruschenko:
È già un codice disperato..... L'ho fatto in modi diversi. Ma come detto sopra. Probabilmente a causa di accettare erroneamente che stavo peccando un errore. Anche se anche queste variabili sono state glitchate nel codice.

Grazie a tutti per il vostro aiuto e i vostri suggerimenti. Ma tutto funziona chiaramente con il galleggiante.
Float è una castrazione del numero che non dà alcun vantaggio. È meglio affrontare tutte le perdite nelle conversioni e usare la massima precisione possibile - il doppio.
Motivazione: