【问题标题】:Culture info comma doesn't read my decimal as decimal文化信息逗号不会将我的十进制读取为十进制
【发布时间】:2012-11-19 10:28:04
【问题描述】:

我用逗号输入的db中my_waste的值是:

16.78

我通过 linq 进行选择,然后:

res.Add("testdb", p.my_waste);

我得到 1678。

我试过了:

res.Add("test", double.Parse(p.my_waste.ToString(), CultureInfo.InvariantCulture));

和

res.Add("test", string.Format(CultureInfo.InvariantCulture, "{0:0.00}", p.my_waste));

我还是得到了 1678。

【问题讨论】:

  • 当您调试它并检查 p.my_waste 我猜该值为 1678。您如何将数据库中的值 获取 到该属性/字段中?什么是类型?
  • 是的,如果p.my_waste 已经是1678,那么调用double.Parse(p.my_waste.ToString(), ?) 是没有用的。
  • 什么是p.my_waste.GetType()?
  • @HansKesting p.my_waste 在数据库中是浮动的。

标签: c# cultureinfo


【解决方案1】:

来自MSDN

不变的文化是文化不敏感的;它与英语相关联,但与任何国家/地区无关。

这意味着它期望数字有小数点,因为英语(所有变体)使用小数点而不是小数点逗号。

如果您输入带有小数逗号的数据,您需要使用带有小数逗号的文化(例如法语)到字符串 数字转换。

目前,逗号被视为千位分隔符并被有效忽略,因此“16,78”如您所见,显示为 1678。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多