如何修复 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 属性以显示文本框中需要显示多少位小数
我正在使用 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 属性以显示文本框中需要显示多少位小数