Ich habe diesen Code (@ Model.TW ist 11,58 und @ Model.TK ist 27,65) (beide Doppel):
var parameters = [@Model.TW,@Model.TK];
Bei der Überprüfung der Parameter [0] und [1] werden die Doppelwerte auf 11 und 27 gerundet. Warum ist das so?
Das gleiche passiert, wenn man es einfach tut
var double = [@Model.TW];
oder
var double = parseFloat("[@Model.TW]");
Selbst wenn die Rückgabetypen von @ Model.xx in string geändert werden, gibt es keinen Unterschied.
Antworten:
2 für die Antwort № 1Float-Werte, die als JSON- oder direkte Werte an JavaScript übergeben werden Muss haben "." als Dezimaltrennzeichen. Einige Kulturen verwenden "," und analysieren daher Zahlen wie JSON oder with parseFloat
Der Dezimalteil wird nicht erkannt.
Korrektur: Verwenden Sie eine unveränderliche Kultur, um Zahlen zu formatieren, oder verwenden Sie vorhandene Bibliotheken (wie Json.Net), um JSON zu erstellen.
var parameters = [@(Model.TW.ToString(CultureInfo.InvariantCulture)),
@(Model.TK.ToString(CultureInfo.InvariantCulture))];
JSON-Beispiel finden Sie unter - Wie schreibe ich mit Razor unverschlüsselten Json in meine Ansicht?