2012-02-09 13 views
20

Uno dei nostri tester è riuscito a impostare una variabile associata a slider su 18888888888888888 che può assumere solo valori compresi tra 1 e 100 normalmente. (Posso osservarlo nel modello di vista che viene salvato in un file xaml). Cosa c'è di speciale in questo numero?numero misterioso 18888888888888888

Ecco alcuni dettagli. L'applicazione ha un dispositivo di scorrimento, è associata a una proprietà osservabile in un modello di vista. Normalmente, quando l'applicazione salva lo spazio di lavoro, questo modello di visualizzazione viene salvato con XamlServices.Save. Il mio tester ha riportato alcuni comportamenti scomodi, il valore del cursore che mostra -214 al caricamento di questo progetto. Gli ho chiesto di inviarmi il file e il valore nella xaml salvata contiene il mio numero misterioso.

So che questo è il risultato di un bug nel mio codice o di qualche altro codice di libreria. Spero che lo inchiodi. Tuttavia, i normali valori di "garbage" non possono essere così. Quando google, vedo alcune pagine non relative alla programmazione, che mostrano in qualche modo che questo numero è stato generato nella cronologia di Internet (quindi non è il mio gatto). In breve, sto cercando di capire come questo numero può essere creato in primo luogo, come quando vedi INT_MAX + 1, se sei abbastanza esperto puoi riconoscerlo (-2137483648 qualcuno?).

+1

non puoi chiedere al tuo tester? – balexandre

+5

@KorayBalci: puoi repro? Chiuso perché non c'è davvero una risposta definitiva, quindi tutto ciò che rimane è la speculazione. – Will

+1

@SLC e Will, non so se non sono abbastanza chiaro, probabilmente questo è il risultato di un bug, un overflow molto probabilmente. Proverò a eseguire il repro e il debug. Tuttavia, non puoi dirmi che questo è solo un numero casuale, un 1 seguito da 16 8s? Dovrebbe essere un effetto collaterale di un bug ma sono curioso di sapere come possa essere prodotto. Basta google solo il numero, ci sono alcune strane occorrenze, probabilmente il risultato di un bug simile (e probabilmente i loro autori non sono nemmeno a conoscenza del problema). Oppure, sto solo trollando e postando un numero imbarazzante per divertimento, ma questo non è un normale numero casuale. Spero di essere chiaro. – mentat

risposta

2

Si supponga che 1 all'inizio sia un segnaposto - un errore nella visualizzazione di un doppio in stringa.

Abbiamo 16 anni. Il doppio tipo in C# ha fino a 16 byte di precisione. Ciò potrebbe indicare che il display del dispositivo di scorrimento sta tentando di mostrare un tipo di valore doppio della spazzatura di 8888888888888888 o 0x1000100010001000100010001000100010001000100010001000100010001000.

È possibile che il tester abbia causato il valore del doppio per diventare una sorta di valore NaN. (forse NaN è visualizzato in questo modo) Ciò spiegherebbe sicuramente la lunghezza della stringa.

Inoltre, a causa delle limitazioni della visualizzazione della classe del cursore che mostra solo numeri, probabilmente si supponeva che leggesse 1x8888888888888888. Immondizia, spazzatura?

Bene, questa è la mia ipotesi.

+2

grazie per lo sforzo, ci penserò, potresti averlo inchiodato. ora la domanda è chiusa di nuovo però. dopo tutti questi upvotes e discussioni, alcune persone hanno appena deciso per conto di noi e di tutti gli altri ...grazie agli ufficiali per proteggere le persone da situazioni straordinariamente strette. discutiamo di come possiamo riprodurre un suono in iPhone. – mentat

Problemi correlati