相关疑难解决方法(0)

Int32.Parse与Single.Parse - ("1,234")和("1,2,3,4").为什么int和浮点类型以不同方式解析分隔符字符?

在C#中:

抛出一个FormatException,似乎不应该:

Int32.Parse("1,234");
Run Code Online (Sandbox Code Playgroud)

这不,这似乎是正常的:

Single.Parse("1,234");
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,这解析得很好:

Single.Parse("1,2,3,4"); //Returns 1234
Run Code Online (Sandbox Code Playgroud)

我的本地文化是EN-US,,默认的千位分隔符char也是如此.

主要问题:为什么不一致?

另外:为什么Parse("1,2,3,4")工作?它似乎只是在解析之前删除本地分隔符char的所有实例.我知道在正则表达式检查或类似的东西中会有额外的运行时开销,但什么时候数字文字"1,2,3,4"不是拼写错误?


相关: C#Decimal.Parse问题用逗号

.net c# floating-point int parsing

25
推荐指数
2
解决办法
1044
查看次数

Asp.Net MVC中带有千位分隔符的十进制值

我有一个自定义模型类,其中包含一个十进制成员和一个接受此类的条目的视图.一切都运行良好,直到我添加javascripts来格式化输入控件内的数字.当焦点模糊时,格式代码格式化输入的数字与千位分隔符','.

问题是我的模态类中的十进制值没有与千位分隔符很好地绑定/解析.当我用"1,000.00"测试它时,ModelState.IsValid返回false,但是对于"100.00"没有任何更改它是有效的.

如果您有任何解决方案,请与我分享?

提前致谢.

样本类

public class Employee
{
    public string Name { get; set; }
    public decimal Salary { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

样本控制器

public class EmployeeController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult New()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult New(Employee e)
    {
        if (ModelState.IsValid) // <-- It is retruning false for values with ','
        {
            //Subsequence codes if entry is valid.
            //
        }
        return View(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

示例视图

<% using (Html.BeginForm())
   { %>

    Name:   <%= Html.TextBox("Name")%><br /> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc decimal defaultmodelbinder

13
推荐指数
3
解决办法
1万
查看次数

如何将"12,4"转换为十进制en-Us文化

我有一个十进制值("133,3")存储在挪威文化中的数据库的字符串列中.

之后,用户将区域设置更改为english-Us.当我使用CultureInfo.InvariantCulture将"133,3"转换为十进制时,获取无效值或错误.

有没有最好的方法来处理C#应用程序中的这种情况?

问候,阿南德

c# cultureinfo

8
推荐指数
4
解决办法
4万
查看次数