比较从字符串转换的两个浮点数时,我遇到问题。 当我将数字与两位小数(例如30,25)进行比较时,我没有任何问题,但是当数字只有一位(30,6)时,结果不好。
例如,30,6 > 30,25
的结果是false
(我没想到)。
if (gvr.RowType == DataControlRowType.DataRow)
{
double CyklusSAP = 0;
double CyklusReal = 0;
bool prevod = false;
CyklusSAP = double.Parse(gvr.Cells[10].Text, System.Globalization.CultureInfo.InvariantCulture);
prevod = double.TryParse(gvr.Cells[11].Text,out CyklusReal);
if (prevod)
{
CyklusReal = double.Parse(gvr.Cells[11].Text, System.Globalization.CultureInfo.InvariantCulture);
if (CyklusReal < CyklusSAP - 1)
{
gvr.Cells[11].BackColor = System.Drawing.Color.LightBlue;
}
if (CyklusReal > CyklusSAP - 1 && CyklusReal < CyklusSAP)
{
gvr.Cells[11].BackColor = System.Drawing.Color.LightGreen;
}
if (CyklusReal > CyklusSAP && CyklusReal < CyklusSAP + 1)
{
gvr.Cells[11].BackColor = System.Drawing.Color.LightYellow;
}
if (CyklusReal > CyklusSAP + 1)
{
gvr.Cells[11].BackColor = System.Drawing.Color.Red;
}
}
}
当第二行比第一行大时,第二行是红色。
答案 0 :(得分:4)
您正在使用不变文化。在不变文化中,,
是千位分隔符,而不是十进制分隔符。因此,您的数字分别为306
和3 025
。您需要使用正确的区域性来解析数字。
答案 1 :(得分:2)
您需要使用正确的区域性将逗号分隔的小数点转换为浮点数
类似
NumberStyles style = NumberStyles.AllowDecimalPoint;
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-FR");
if(double.TryParse(gvr.Cells[10].Text, style, culture, out CyklusSAP) && double.TryParse(gvr.Cells[10].Text, style, culture, out prevod))
{
// Your logic goes here
}
奖金:别忘了写using System.Globalization;
POC:.net fiddle