【问题标题】:How do I compare a value to a decimal using a comma separator?如何使用逗号分隔符将值与小数进行比较?
【发布时间】:2022-01-03 16:31:20
【问题描述】:

我的 DataGridView 有一些十进制输入;比如说4,3

我想比较它是否在3,54,4之间。

我应该如何在我的代码中写入数字3,54,4

在我目前的尝试中,我遇到了一些错误,例如

;预计

} 预期

操作员 ||无法申请

我尝试过 Cultureinfo,但我不知道具体如何使用它。

到目前为止,这是我的代码:

var updateLabStar = db.PatientLab.Where(x => x.BloodUrinId == item.BloodUrinId).FirstOrDefault();

if (Convert.ToDecimal(Result) < 3,5 || Convert.ToDecimal(Result) > 4,4)
{
    updateLabStar.Interval = updateLabStar.Result + " *";
    db.SaveChanges();
}

【问题讨论】:

  • 您不能在代码中使用逗号作为文字值的小数分隔符,您必须使用句点。 CultureInfo 只影响小数的显示方式,而不影响它的存储或比较方式。如果您想在代码中使用逗号作为文字,您需要将它们定义为字符串,然后使用适当的文化将它们解析为小数。
  • @DM,感谢您的回复。我已经尝试过很多方法,比如 string.Format(..., "{0:N}", parsed) 并且我确信我做错了。你能告诉我你是什么意思吗?提前谢谢你
  • @DM,我不同意“CultureInfo 只影响小数点的显示方式”,因为它实现了可用于解析数据的IFromatProvider 接口。
  • @HelenTekie 当然,看看this fiddle
  • @Qwertyluk 有效点,但解析后的表示与任何其他文化相同。这就是我的意思。一旦有了decimal,就没有文化是没有意义的,因为C#只以一种方式处理decimal

标签: c# decimal comma


【解决方案1】:

How to write decimal literal.

var updateLabStar = db.PatientLab.Where(x => x.BloodUrinId == item.BloodUrinId).FirstOrDefault();

if (Convert.ToDecimal(Result) < 3.5m || Convert.ToDecimal(Result) > 4.4m)
{
    updateLabStar.Interval = updateLabStar.Result + " *";
    db.SaveChanges();
}

【讨论】:

  • 感谢您的回复,但我在添加“m”或“M”时仍然遇到同样的问题
猜你喜欢
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
相关资源
最近更新 更多