Vraag Waarde was te groot of te klein voor een Int32 [duplicaat]


Mogelijke duplicaten:
Wat is de maximale waarde voor een int32? 

Mobileno = Convert.ToInt32(txmobileno.Text);

fout die ik krijg tijdens het invoegen in de database


12
2018-06-14 07:48


oorsprong


antwoorden:


Waarom zou je in vredesnaam een ​​geheel getal van elk type gebruiken om een ​​telefoonnummer op te slaan?

Je kunt op geen enkele manier rekenen met een rekenkunde en je verliest alle voorloopnullen.

Gebruik in plaats hiervan een string.


50
2018-06-14 07:51



Een integer (Int32) is beperkt in de waarden die het kan opslaan omdat het "slechts" 32 bits gebruikt. Het kan een waarde opslaan tussen 2.147.483.647 en -2.147.483.648. (Meer informatie over MSDN)

De waarde vertegenwoordigd door de txmobileno.Text, is te groot of te klein.

Kijkend naar de naam txmobileno is waarschijnlijk een mobiel telefoonnummer. Dit soort getallen heeft te veel cijfers om op te slaan in een int32. Ook een telefoonnummer begint meestal met een 0 of 00 of + (internationaal). Er is geen manier om dit soort informatie op te slaan in een geheel getal (of een ander getaltype). Sla ze gewoon op in een string.


11
2018-06-14 07:51



Zoals anderen hebben opgemerkt, is het opslaan van een telefoonnummer als een geheel getal een fout.

  • U verliest de mogelijkheid om tekens en witruimte op te slaan, bijvoorbeeld landcodes - "+44 (0800) 12345".
  • Er is geen logische reden om het op te slaan als een geheel getal - zou je ooit op twee telefoonnummers moeten rekenen? Is het logisch om twee telefoonnummers bij elkaar te voegen?
  • Voorloopnullen gaan verloren - (0800 12345) worden (80012345).
  • Als u het als een tekenreeks opslaat, kunt u regex-validatie uitvoeren op de gebruikersinvoer.

Dit gezegd hebbende, roept de oorspronkelijke vraag enkele punten op die moeten worden gemaakt:

  • Geef de voorkeur aan Int32.TryParse in plaats van Convert.ToInt32 als de bronwaarde een tekenreeks is.
  • Wanneer u te maken heeft met waarden die mogelijk overlopen - sluit de code dan in in een gecontroleerd {...} - blok.

4
2018-06-14 08:12