program Como faço para converter um decimal para um int em c#?




program in c to convert decimal to hexadecimal (9)

decimal d = 5.5 ;

int i = decimal.ToInt32(d);// you will get i = 5

ref: MSDN

Como faço para converter um decimal em um int?



Arredondando um decimal para o inteiro mais próximo

decimal a ;
int b = (int)(a + 0.5m);

quando a = 49.9 , então b = 50

quando a = 49.5 , então b = 50

quando a = 49.4 , depois b = 49 etc.


decimal d = 2;
int i = (int) d;

Isso deve funcionar bem.


Um truque para arredondamento rápido é adicionar 0,5 antes de converter seu decimal em um int.

decimal d = 10.1m;
d += .5m;
int i = (int)d;

Ainda deixa i=10 , mas

decimal d = 10.5m;
d += .5m;
int i = (int)d;

Arredondaria para que i=11 .


System.Decimal implementa a interface IConvertable , que possui um membro ToInt32() .

Chamar System.Decimal.ToInt32() funciona para você?


Use Convert.ToInt32 de mscorlib como em

decimal value = 3.14m;
int n = Convert.ToInt32(value);

Veja o MSDN . Você também pode usar Decimal.ToInt32 . Mais uma vez, consulte o MSDN . Finalmente, você pode fazer um elenco direto como em

decimal value = 3.14m;
int n = (int) value;

que usa o operador de conversão explícito. Veja o MSDN .


Eu prefiro usar Math.Round , Math.Floor , Math.Ceiling ou Math.Truncate para definir explicitamente o modo de arredondamento conforme apropriado.

Note que todos eles também retornam Decimal - já que Decimal tem um intervalo maior de valores que um Int32, então você ainda precisará converter (e verificar overflow / underflow).

 checked {
   int i = (int)Math.Floor(d);
 }

int i = (int)d;

lhe dará o número arredondado para baixo.

Se você quiser arredondar para o número par mais próximo (ou seja,> .5 irá arredondar para cima) você pode usar

int i = (int)Math.Round(d, MidpointRounding.ToEven);

Em geral, você pode converter entre todos os tipos numéricos em C #. Se não houver informações que serão perdidas durante o elenco, você poderá fazê-lo implicitamente:

int i = 10;
decimal d = i;

embora você ainda possa fazê-lo explicitamente, se desejar:

int i = 10;
decimal d = (decimal)i;

No entanto, se você estiver perdendo informações através do elenco, deve fazê-lo explicitamente (para mostrar que está ciente de que pode estar perdendo informações):

decimal d = 10.5M;
int i = (int)d;

Aqui você está perdendo o ".5". Isso pode ser bom, mas você deve ser explícito sobre isso e fazer um elenco explícito para mostrar que você sabe que está perdendo as informações.





decimal