6 svar
68 visningar
alex är nöjd med hjälpen!
alex 182
Postad: 6 sep 2019

Vad händer om du gör om ett decimaltal till ett heltal (int) - avrundas talet korrekt då?, varför?

Hej

Vad händer om du gör om ett decimaltal till ett heltal (int) - avrundas talet korrekt då?, varför?

svar :

jag vet att det ska inte funka men varför?

joculator 1646 – Moderator
Postad: 6 sep 2019 Redigerad: 6 sep 2019

Det beror på HUR du 'gör om det'.

 

Edit:

Convert.ToInt32 and Decimal.ToInt32 behave differently.
From MSDN: Decimal.ToInt32 - The return value is the integral part of the decimal value; fractional digits are truncated.
Convert.ToInt32 - Return value rounded to the nearest 32-bit signed integer. If value is halfway between two whole numbers, the even number is returned; that is, 4.5 is converted to 4, and 5.5 is converted to 6

alex 182
Postad: 6 sep 2019

men Convert.ToInt32 avrundar på ett rätt sätt 

till exempel om decimaltalet är 1,5 så Convert.ToInt32 kommer att avrundra till 2 och om decimaltalet är 1,4 så avrundas till 1

men jag har ingen aning om Decimal.ToInt32 , där försöker men går inte.

Affe Jkpg 4801
Postad: 6 sep 2019 Redigerad: 6 sep 2019

Det finns, som joculator beskriver, två korrekta svar på vad som är korrekt.

Om det inte funkar som man tänkt dig, brukar man på lämpligt sätt enkelt kunna justera med värdet ±0.5

alex 182
Postad: 6 sep 2019

jag fattar inte varför 4,5 avrundas till 4 ??

alex skrev:

jag fattar inte varför 4,5 avrundas till 4 ??

Så lärde man sig att avrunda när jag gick i skolan - om sista siffran är 5 skulle det bli mindre felaktigheter om man alltid avrundade till närmaste jämna tal - d v s 4,5 och 6,5 avrundas neråt, men 5,5 och 7,5 avrundas uppåt. (Man hade lika gärna kunnat bestämma sig för att alltid avrunda till närmaste udda tal, men det gjorde man inte.)

Mimamed 10
Postad: 8 sep 2019

om du skriver tex (int) 4.5 så kommer du få talet 4 eftersom (int) endast tar heltalet och lämnar decimalerna. Det avrundar INTE.

 

Om vi tar ett annat exempel som (int) 123.456 så kommer du få fram 123 eftersom int ignorerar decimaltalen.

Svara Avbryt
Close