簡體   English   中英

將負字符串十進制值轉換為C#中的double

[英]Convert a negative string decimal value to double in c#

我想將字符串格式(如-14.3的值轉換為double。

我目前正在使用Convert.ToDouble()將正值轉換為雙Convert.ToDouble() ,但是如果十進制負數將返回意外結果。 對於-14.3它返回-143 所以在這方面需要一些幫助

 private double getDouble(string Value)
        {
            double result = 0;
            try
            {               
                result = Convert.ToDouble(Value);                
            }
            catch (Exception)
            {
                result = 0;
            }

            return result;
        }

    }

您需要使用NumberFormatInfo來指定用於負號和小數點分隔符的字符。

var format = new NumberFormatInfo();
format.NegativeSign = "-";
format.NumberDecimalSeparator = ".";

var negativeNumber = Double.Parse("-14.3", format); // -14.3
var positiveNumber = Double.Parse("352.6", format); // 352.6

請參閱repl.it上的代碼

代替使用Convert.ToDouble函數,使用:

public static double mtdGetDouble(string Value)
{
    if (Value == "" || Value == "-") return 0;
    else return Convert.ToDouble(Value);
}

(這是我的風格...)

如果要將Double.TryParseNumberFormatInfo一起使用,則需要指定NumberStyles.AllowDecimalPointNumberStyles.AllowLeadingSign

var format = new NumberFormatInfo();
format.NegativeSign = "-";
format.NumberNegativePattern = 1;
format.NumberDecimalSeparator = ".";

double negativeNumber;
Double.TryParse("-14.3", NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, format, out negativeNumber); // -14.3
double positiveNumber;
Double.TryParse("352.6", NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, format, out positiveNumber); // 352.6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM