Vyhledávání na webu

javascript - převod float na int při JSON stringify


Používám Node.js a vestavěný objekt JSON k převedení JSON objektu na řetězec. V objektu je

{ 
    weight : 1.0
}

Nicméně když převedu na řetězec a zapíšu do souboru, výstup je váha : 1.

Odpověď č. 1

Jak je uvedeno v této odpovědi na podobnou otázku a na této stránce MSDN:

V JavaScriptu neexistuje pojem celého čísla. Čísla v JavaScriptu jsou „hodnoty ve formátu IEEE 754 s dvojitou přesností a 64 bity“.

Otevřete konzoli svého webového prohlížeče a zadejte 1.0. Uvidíte, že se vypíše 1. Všechny čísla v JavaScriptu jsou čísla s plovoucí desetinnou čárkou, takže váš serializátor se jednoduše rozhodl vynechat zbytečnou přesnost.

Odpověď č. 2

Ve skutečnosti to není váš problém, 1 == 1.0 == 1.00 v Javascriptu a pokud máte hodnotu s plovoucí desetinnou čárkou, jako 1.55, pak stringify vám dá stejnou hodnotu 1.55, ne 1.. I přesto, pokud chcete, aby bylo napsáno 1.0, změňte hodnotu na řetězec

Myslím tím, že hodnotu vložte do dvojitých uvozovek

{ 
    weight : "1.0"
}