C# String in Int mit Anfangs nullen?

9 Antworten

Das es Mathematisch keinen sinn macht ist mir klar.
Es gibt aber gefüllt 3 Milliarden fällen wo es mit kommen sollte.
In meinem Falle ist es eine Nummer fürs SAP.

Dann ist dein Datentyp falsch und du willst niemals einen Int haben, sondern solltest bei String bleiben. Oder in deinem Konzept stimmt irgendwas nicht, falls du mit einer SAP-Nummer irgendwas direkt berechnen willst.

Postleitzahlen und Telefonnummern zum Beispiel sind im allgemeinen Sprachgebrauch Zahlen, sollten aber im Computer niemals als Zahlen gespeichert werden - weil man dann eine eventuelle führende Null immer absichtlich wegschmeißt. Postleitzahlen und Telefonnummern sind Strings.

pcjobnet  26.06.2020, 08:24

Eine Postleitzahl ist nie eine Zahl, denn nur wenige Länder haben wirklich eine Zahl - hier in der Schweiz z.B.

Aber Deutschland hat führende Nullen, England hat Buchstaben usw. :) Ist aber ein häufiger Datemodellierungs-Anfängerfehler.

1
bluebird5  26.06.2020, 08:27
@pcjobnet

Ja, ist richtig. Ich meine in meiner Antwort ausschließlich deutsche Postleitzahlen. :)

0
pcjobnet  26.06.2020, 08:32
@bluebird5

Ja, aber eben, deutsche Postleitzahlen sind per Definition für einen Programmierer keine Zahlen...

1

Ein Integer ist nun einmal eine Ganzzahl, die Werte abspeichert. Führende Nullen haben da eben keinerlei Bedeutung bzw. existieren schlicht nicht. Was du dann hast ist eben ein String, da brauchst du dann nix konvertieren.

Alternativ speicherst du die Datei als Integer ab und tust sie bei der Verwendung wieder mit führenden Nullen aufgefüllt verwerden, sofern die Anzahl der Zeichen immer identisch ist.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
apachy  26.06.2020, 09:15

aufgefüllt verwerden = auffüllen, keine Ahnung was ich manchmal schreibe. Bin definitiv nicht multitaskingfähig.

0

Wie soll die bitte da bleiben? Währe da ein Komma währe das anders, aber das macht Mathematisch kein Sinn das da ne 0 steht.

Tastaturbrix 
Fragesteller
 26.06.2020, 07:09

Das es Mathematisch keinen sinn macht ist mir klar.

Es gibt aber gefüllt 3 Milliarden fällen wo es mit kommen sollte.

In meinem Falle ist es eine Nummer fürs SAP.

Aber trozdem vielen Dank für dein Bemühen

0
goldmensch409  26.06.2020, 07:14
@Tastaturbrix

Da ein Compiler die Mathematischenregeln beachtet, wird das dieser niemals machen. Hab kein Plan was mit SAP gemeint ist. Aber wenn du zahlen vergleichen willst dann nehme zwei Strings. Währe da nur eine 0 würde der Compiler die akzeptieren.

0
pcjobnet  26.06.2020, 08:30

In der Mathematik ist es "nur" üblich, das führende Nullen weggelassen werden, aber keine festgelegt Regel. Da Sie aber keinen Wert hat, macht es speichertechnisch ja keinen Sinn, diese zu speichern... braucht nur Platz für nichts.

1

Führende Nullen sind immer String.

Die Frage ist, ob SAP dies als Nummer speichert (int) und einfach mit führenden Nullen formatiert anzeigt (das merkst du beim Zugriff) oder ob die Nummer als String gespeichert ist.

Da du auf SAP zuzugreifen scheinst, wird es irgendwo eine Dokumentation geben, wo das steht. Wenn du einfach in deinem eigenen System eine Nummer vom SAP Systemspeichern möchtest, dann solltest du auch zuerst herausfinden, wie die Nummer in SAP verwendet wird. Mit ein wenig Pech ist es als String definiert und enthält plötzlich Buchstaben - und dann kannst du deinen INT vernichten.

Int ist eine Zahl, aus mathematischer Sicht haben führende Nullen keine Bedeutung.

Genau das stellen die Zahlen-Typen in C# dar, das ist auch bei jeder anderen Sprache so.

Wenn Du unbedingt führende Nullen haben willst, dann brauchst Du einen String.
Das wird auch recht oft gemacht, ich sehe immer wieder Ids als Strings, auch wenn sie nur Ziffern enthalten, aber durch den String hat man mehr Möglichkeiten.

Woher ich das weiß:Berufserfahrung