2010-08-25 18 views
19

Possible Duplicate:
Declaration suffix for decimal typeC# - numerici Suffissi

Ciao a tutti,

Nel seguente frammento di codice; RewardValue è un numero decimale:

dto.RewardValue = 1.5; 

Ora, questo mi dà il seguente errore:

"Impossibile convertire il tipo di sorgente doppia a bersaglio di tipo decimale"

ha un senso, ed è facilmente risolvibile modificando che riga di codice a questo:

dto.RewardValue = 1.5m; 

Ora, la "m" converte che a un decimale e tutto è buono.

Qualcuno sa da qualche parte dove posso trovare un elenco di tutti quegli operatori di tipo "m"? (E se si potesse farmi sapere che cosa il termine corretto per chi sono, che sarebbe molto apprezzato)

EDIT: Grazie a HCL e MartyIX per avermi fatto sapere che questi sono indicati come "suffissi"

+1

La risposta a questa si trova alla domanda "vittima" , ma la domanda posta è molto più mirata. Richiede esplicitamente solo il suffisso decimale ('decimal m = 2m;'), e questo richiede un elenco di tutti i "suffissi numerici". Fwiw, 2 ¢, ecc. – ruffin

risposta

9

Here troverai un elenco e anche i link.

1

http://dotnetperls.com/suffix-examples - lo chiamano semplicemente numeric suffixes (http://msdn.microsoft.com/en-us/library/b1e65aza(VS.71).aspx - suffisso anche qui)

Suffix type: unsigned int

Character: U

Example: uint x = 100U;

Suffix type: long

Character: L

Example: long x = 100L;

Suffix type: unsigned long

Character: UL

Example: ulong x = 100UL;

Suffix type: float

Character: F

Example: float x = 100F;

Suffix type: double

Character: D

Example: double x = 100D;

Suffix type: decimal

Character: M

Example: decimal x = 100M;

16

Credo che il termine che stai cercando è "suffisso".

Esempi:

1; // int 
1.0; // double 
1.0f; // float 
1.0m; // decimal 
1u; // uint 
1L; // long 
1UL; // ulong 
12

E 'una bella piccola lista, davvero.

F: float 
D: double 
U: uint 
L: long 
UL: ulong 
M: decimal 

Naturalmente un valore integrale pianura di per sé è interpretato come un int, a meno che sia troppo grande per essere un int nel qual caso un long, a meno che sia troppo grande per un long nel qual caso un ulong. Se è troppo grande per un ulong, non è possibile utilizzarlo come valore letterale (per quanto ne so).

Un valore con un punto decimale in esso viene automaticamente interpretato (come è stato rilevato da solo) come double.

Problemi correlati