[英]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.