首页 > 解决方案 > 比较从字符串转换的两个浮点数

问题描述

比较从字符串转换的两个浮点数时出现问题。当我比较带两位小数的数字(例如 30,25)时,我没有任何问题,但是当数字只有一位(30,6)时,结果很糟糕。

例如,结果30,6 > 30,25false(我没想到)。

       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;
                }
            }
        }

图片

当第二行比第一行大时,第二行是红色的。

标签: c#asp.net

解决方案


您正在使用不变的文化。在不变文化中,,是千位分隔符,而不是小数分隔符。所以你的数字变成3063 025。您需要使用正确的文化来解析数字。


推荐阅读