Typ Single mit .F Notation

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Holistiker.

    Typ Single mit .F Notation

    Hallo Zusammen,

    aktuell Programmiere ich in VB eine Schnittstelle nach Shopware (Rest API).

    Soweit so gut.

    Um die Preise im Shop für die Artikel per API anzulegen ist der Preis als Typ Single anzugeben.

    Wenn ich jetzt aber eine Single Variable mit sagen wir mal 50.0 als Preis einspielen möchte, macht der Shop da irgendeine Kuriose Zahl alla 47.0121212 draus.

    Durch Stöbern im Internet habe ich schon herausgefunden das ich explizit "50.0F" per API übergeben muss damit im Shop auch wirklich 50.0 übertragen wird.

    Frage:

    Wir bekomme ich das über eine Variablen Zuweisung hin?

    Aktuell funktioniert es nur wenn ich explizit schreibe:

    VB.NET-Quellcode

    1. Dim PreisimShop as Single = 50.0F


    Ich muss aber statt 50.0F eine String Variable übergeben die den Preis enthält.

    Also eigentlich so:

    VB.NET-Quellcode

    1. Dim PreisfuerdenShop as String = "50,00"
    2. Dim PreisimShop as Single = PreisfuerdenShop


    Das klappt aber aufgrund einer ungültigen Konvertierung nicht.

    Habe schon Parse.single , convert.tosingle oder 50.0F als String zuweisung versucht.

    Irgendwie klappt davon garnichts. Der Shop schluckt das ganze auch wirklich nur dann wenn am ende ein "F" steht. (Als eigenen zusammen gebauten String mit F am ende und dann Konvertierung in Single hab ich auch schon getestet)

    Kann mir da jemand helfen?

    Danke! :)
    Also es liegt am ,! Mit "50.00" als String geht es. Mach es mal so, dann klappt es:

    VB.NET-Quellcode

    1. Dim PreisfuerdenShop As String = "50000,22"
    2. Dim PreisimShop As Single
    3. If Single.TryParse(PreisfuerdenShop, NumberStyles.Number, Nothing, PreisimShop) Then
    4. messagebox.show(PreisimShop.ToString("#.00"))
    5. End If


    Wobei ich es schon erlebt habe das gerundete Werte so herausgekommen sind, evtl. ist es besser hier ein Double zu nutzen und bei der übergabe zur funktion auf Single zu reduzieren.
    Cloud Computer? Nein Danke! Das ist nur ein weiterer Schritt zur totalen Überwachung.
    „Wer die Freiheit aufgibt, um Sicherheit zu gewinnen, wird am Ende beides verlieren.“
    Benjamin Franklin

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „NoIde“ ()

    iwie ein komischer Shop.
    Single als Datentyp für Währung herzunehmen ist ein Fehldesign.
    Und wenn du das als String übergeben musst, dann ist Single ja garnet der Datentyp, sondern String - was noch viel fehldesigneter ist.
    Ich kenne mich mit REST nicht aus, aber täte mich wundern, wenn REST nur den String-Datentypen unterstützte.

    Also überleg ma, ob dieser "Shop" es wert ist, sich mit auseinanderzusetzen.
    Also der offizielle Preis laut API Beschreibung von Shopware selber wird in Double angegeben.
    Allerdings hatte ich mir die Klassen für den Aufbau der Artikel, aus einem C# Projekt konvertiert.
    Warum die dann dort Single verwendet haben, ist mir auch schleierhaft.

    Der Eingangswert ist halt ein String, weil dieser aus unserer ERP Software als .Tab Datei gespeichert wird.
    Da sind dann leider keine Feldtypen vorhanden.

    Der Wert den ich in der Tab Datei stehen habe, lautet 59,00
    Die Tab Datei wird in eine Untypisierte Datatable geladen und von dort aus dann Zeile für Zeile weiter verarbeitet. Also ohne Gridview, Bindingsource etc.

    Aber auch mit dem Wissen, dass offiziell der Datentyp Double verwendet wird, klappt das ganze nicht.

    Habe jetzt sowohl die Funktion von oben (natürlich auf Double geändert) also auch Parse.double und auch Convert.toDouble getestet.
    Die Schnittstelle selber (bzw. die Rest API) meldet auch keinen Fehler (Im Json String steht 59.0) aber in der SQL Datenbank auf dem Webserver steht jetzt: 49.5798319328

    Komischerweise zeigt die SQL Datenbank nur dann den richtigen Wert an wenn ich 59.0F übergebe.

    // Edit natürlich haben die in C# Nicht Single sondern Float verwendet. Aber in VB ist ja Float = Single

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Holistiker“ ()