如何修复 kendo NumericTextBox 格式

how to fix kendo NumericTextBox format

我正在使用 kendo(v. 2019.2.514)构建应用程序。我在 NumericTextBox 的数字格式上遇到了奇怪的错误。

此时我正在创建一个表格来修改产品。问题是,我的价值观得到了不同的结果。

值以浮点数形式存储在数据库中。在模型中也是如此。 而且我很确定问题出在格式上,因为当值是自然数时没问题,但是:

(第一个控件格式)
0.1 给出 1
0.05 得到 5

(第二种格式)
1.2给出120000004768372(表示原值乘以1e+14)
0.3 给出 300000011920929 (* 1e+15)

这是我的 2 种 NumericTextBox 格式

@(Html.Kendo().NumericTextBox<float>().Name("Weight").Min(0).Value(Model.Weight).Format("#.## kg")
                    .Placeholder($"{Language.translate("Weight")} (kg)").HtmlAttributes(new { validate = true })
                )

@(Html.Kendo().NumericTextBox<float>().Name("upTo7").Min(0).Format("#.## €").Value(Model.Price)
                    .Placeholder(Language.translate("Price up to x days").Replace("x", "7")).HtmlAttributes(new { validate = true })
                )

我已经尝试过 #.00、n2 等格式,但对我来说没有任何效果

我只想正确显示这些数字

问题似乎出在你的模型上,因为我刚刚尝试了以下代码并且它工作正常:

@(Html.Kendo().NumericTextBox<float>().Name("Weight").Min(0).Value(0.05f).Format("#.## kg")
                    .Placeholder("Weight (kg)").HtmlAttributes(new { validate = true })
                )

@(Html.Kendo().NumericTextBox<float>().Name("upTo7").Min(0).Format("#.## €").Value(1.2f)
                    .Placeholder("Price up to 7 days").HtmlAttributes(new { validate = true })
                )

输出:

0.05 kg
1.2 €

我建议在您的数据库中使用 decimal 数据类型而不是 float,因为近似数字数据类型不会存储指定的精确值。有关详细信息,请参阅 Difference between numeric, float and decimal in SQL Server

你可以试试这个..NumericTextBox

@(Html.Kendo().NumericTextBox<decimal>().Name("Weight").Min(0).Value(0.05f).Format("#.## kg")
 .Decimals(3)
                    .Placeholder("Weight (kg)").HtmlAttributes(new { validate = true })

并添加 Decimal 属性以显示文本框中需要显示多少位小数