Domanda

Per una serie di ragioni, devo usare carri nel mio codice, invece di doppie. Per utilizzare un letterale nel mio codice, devo scrivere qualcosa di simile:

float f = 0.75F;

o il compilatore barf in quanto si tratta solo "0,75" come un doppio. C'è qualcosa che posso mettere nel mio codice o impostare in Visual Studio che renderà trattare un letterale come "0,75", come un galleggiante, senza dover aggiungere una "F" ogni volta?

È stato utile?

Soluzione

Float è dotato di un F: -)

Altri suggerimenti

No - per fortuna, IMO. Letterali sono trattati allo stesso modo in tutto il mondo.

Questa è una buona cosa - immaginare qualche sviluppatore di manutenzione viene e guarda il codice in un anno. Egli vede "0.75" e pensa "So C # -!? Questa è una doppia Aspetta, come si viene assegnato a una variabile float" Ick.

E 'davvero così doloroso per aggiungere la "F" in tutto il mondo? Hai davvero che molte costanti? Potrebbe li come si estrarre valori costanti, in modo che tutti i tuoi letterali "F-suffisso" sono nello stesso posto.

A proposito - si possono trovare tutte le opzioni del compilatore per C # a http : //msdn.microsoft.com/en-us/library/6ds95cz0.aspx . Se si seleziona lì, vedrete che non c'è alcuna possibilità che permette questo -. E giustamente, per le ragioni che @ Jon Skeet notato

La lingua interpreta virgola letterali di precisione floating come doppie in tutto il mondo. Questa non è una caratteristica configurabile del compilatore -. E con buona ragione

Configurazione come la lingua che interpreta il codice porterebbe a problemi sia con la compatibilità e la capacità degli sviluppatori di manutenzione per capire cosa significa il codice.

Anche se non è consigliabile in generale, è possibile ridurre il dolore un po 'in C # 3 utilizzando:

var f = 0.75F;

Basta essere attenti, perché dimenticare il suffisso 'F' con questa sintassi farà sì che il compilatore per creare un doppio, non un galleggiante.

Vi consiglio di utilizzare sempre

var meaning = 1f;

perché la parola chiave "var" fa risparmiare un sacco di interpretazione umana e tempi di manutenzione.

Il comportamento corretto non sarebbe per un compilatore interpretare letterali non suffisso i galleggianti singola precisione, ma piuttosto di riconoscere che le conversioni da letto di galleggiare dovrebbero essere considerate ampliare conversioni poiché, per ogni valore double, non v'è né precisamente una rappresentazione float senza ambiguità-corretto, oppure (in alcuni casi limite rare) ci saranno precisamente due valori altrettanto buoni-, nessuno dei quali sarà più di una parte per quadrilione dall'essere il valore univocamente-corretto. Semanticamente, le conversioni da float a double devono essere considerati come conversioni restringimento (in quanto richiedono che il compilatore "indovinare" a informazioni che non ha), ma le difficoltà pratiche che potrebbero causare potrebbero giustificare delle conversioni in quella direzione 'allargamento'.

Forse si dovrebbe presentare una petizione Microsoft per aggiungere una conversione ampliamento da double a float? Non c'è alcun buon motivo per cui il codice che calcola la grafica coordina come double deve essere ingombra di conversioni di tipo quando si chiama funzioni di disegno.

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