gpt4 book ai didi

c# - 如何在 asp.net core 中设置小数位?

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:06 24 4
gpt4 key购买 nike

我对 asp.net core 中的小数位感到疯狂。

SQL Server 表:

money decimal (18,0)   

我把 Startup.cs/Configure 放在了

var cultureInfo = new CultureInfo("vi-VN");
cultureInfo.NumberFormat.CurrencySymbol = "đ";
cultureInfo.NumberFormat.CurrencyDecimalDigits = 0;
cultureInfo.NumberFormat.CurrencyDecimalSeparator = ",";
cultureInfo.NumberFormat.CurrencyGroupSeparator = ".";


CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

var supportedCultures = new[]
{
cultureInfo
};

app.UseRequestLocalization(new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("vi-VN"),
// Formatting numbers, dates, etc.
SupportedCultures = supportedCultures,
// UI strings that we have localized.
SupportedUICultures = supportedCultures
});

但是,当我得到任何十进制值时,它总是在小数点后两位。

在 View 中:

<input asp-for="money"/> => 显示类似 123455,00 的内容。并且这个值会被提交回controller计算,所以应该是数字格式,而不是像ToString("N0")那样的字符串格式...

最佳答案

Decimal 的 ToString 在这方面确实很奇怪,因为它没有任何一致的返回值。它返回原始数字中可用的小数位数,如果没有小数点,则只返回不带小数点的整数。

您将需要使用 C 格式说明符来指示这是一个货币数字,并且它应该遵循线程中指定的区域性。

decimal x = 100.5555;
Console.Write(x.ToString("C")); // Outputs 101 đ. Uses away from zero roundign.
Console.Write(x.ToString()); // Outputs 100.5555.

更多信息,请访问:Standard Numeric Format Strings .

编辑:

要使用 ModelBinder,您可以在 View 模型本身上使用数据注释来指定格式。看这里:"asp-format" not applied to tag helpers .

关于c# - 如何在 asp.net core 中设置小数位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46087640/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com