簡體   English   中英

C#從鍵盤讀取十進制數

[英]C# read decimal number from keyboard

嗨,我剛剛開始學習C#,並且編寫了一個簡單的程序,該程序應該讀取從鍵盤輸入的值。 我使用的代碼是:

    try {
    x=double.Parse(Console.ReadLine(),CultureInfo.InvariantCulture.NumberFormat);
        }
    catch (System.FormatException)
    {//error message }        

問題是,如果我輸入1,2,則x中存儲的值為12。是否可以通過任何方式將其讀取為1.2,從而將逗號轉換為點?

同樣,如果我輸入1,,3,則該值為13,並且不會生成錯誤。

您應該改用double.TryParse並傳遞適當的區域性信息。

double x;
CultureInfo ci = new CultureInfo("it-IT"); 
if(double.TryParse(Console.ReadLine(),NumberStyles.AllowDecimalPoint, ci, out x))
    MessageBox.Show("It is a double number");
else
    MessageBox.Show("Not a double");

您也可以嘗試使用不需要CultureInfo和NumberStyles參數的簡單版本,但是在這種情況下,您將根據計算機的當前區域性進行轉換,根據您的意圖這是否可以達成共識。

if(double.TryParse(Console.ReadLine(),out x))
    .....

使用Culture.InvariantCulture意味着使用默認的操作系統區域性來執行解析,該默認區域性與英語(而不與任何國家/地區)相關聯。

TryParse一個重要好處是,您避免使用代碼來處理由簡單Parse方法引發的可能異常。 當您有替代方法時,應始終避免使用異常作為控制程序流程的方法。 (性能達到目標)。

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ",";
Double.Parse(num,nfi);

暫無
暫無

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

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