我有这个代码(@ Model.TW是11,58而@ Model.TK是27,65)(两个都是双倍):
var parameters = [@Model.TW,@Model.TK];
检查参数[0]和[1]时,双精度值四舍五入为11和27.为什么会这样?
只做
时会发生同样的事情var double = [@Model.TW];
或
var double = parseFloat('[@Model.TW]');
即使@ Model.xx的返回类型更改为字符串,也没有区别。
答案 0 :(得分:2)
作为JSON传递给JavaScript的浮点值或直接值必须具有"。"作为小数分隔符。有些文化使用","因此,解析诸如JSON或parseFloat
之类的数字将无法识别小数部分。
修复:使用不变文化格式化数字或使用现有库(如Json.Net)生成JSON。
var parameters = [@(Model.TW.ToString(CultureInfo.InvariantCulture)),
@(Model.TK.ToString(CultureInfo.InvariantCulture))];
JSON示例可以在 - How do I write unencoded Json to my View using Razor?
找到