2011-05-06 62 views
1

我正在使用StreamReader對象的ReadLine函數從文本文件中讀取十進制值。我覺得奇怪的是一些值有三位小數點後的所有零,即「-93.000」,但是當我調試時,我注意到流讀取器將只讀取先前的值爲「-93.00」。我不確定爲什麼會發生這種情況,它會讀取所有零的小數點後兩位的值,即「-85.00」,就好了。我需要能夠讀取整個值作爲驗證目的,否則在我的程序中會報告不準確的結果。StreamReader ReadLine函數

發生此行爲的任何想法?有沒有其他解析文本文件的方式來保留原始字符串?謝謝。

UPDATE:

Line = "-93.00\t 
-99.99\t 
-85.00" 
:看完第一行之後

-93.000 {\Tab} 
-99.99 {\Tab} 
-85.00 

行變量:讀取文本文件

string Line = sr.ReadLine(); 

的樣本值,在文本文件中

代碼

UPD ATE 2:

我已經在最近一個小時裏通過了這幾次。我試圖仔細觀察線路設置的位置,這是我縮小到的範圍。我會再次梳理代碼,以確保。我還會查看由外部提供給我的文本文件的格式。

更新3:

每約翰·桑德斯的建議,我與剛剛罪魁禍首值和LO嘗試過了,你看它提供的價值最初呈現。我猜測它可能與原始文本文件的格式有關,也許是某些隱藏字符會影響值的讀取方式。我知道這是一個不尋常的案例。

UPDATE 4:

試圖修改文本文件在記事本++,去掉了一些空間和重新保存。流讀者現在讀它很好。這是一個非常奇怪的問題,我同意其他人認爲ReadLine()不應該這樣做。也許這也只是我的設置或文本文件編碼的僥倖。

+5

'ReadLine'方法不知道數據的類型是什麼。請顯示您用來獲取數字的代碼。 – 2011-05-06 16:49:34

+0

這不能來自'ReadLine()'字符串。我認爲在看到像這樣的事情之前,你必須轉換成雙倍。 – 2011-05-06 16:52:45

+2

它必須是你在代碼中分割值的方式。 'ReadLine'將**從來沒有**對我們的開發者做這種事情! – 2011-05-06 16:54:59

回答

0

爲什麼不嘗試通過FileStream作爲字節數組讀取文件?

byte[] fileContents = File.ReadAllBytes(@"c:\foo\bar\bazbat.txt") ; 

那一定是某種編碼問題(例如,你想它讀成UTF-8編碼的文本,文件實際上是一些其他編碼的編碼)。

+0

感謝Nick,我同意這可能是文本文件的一些奇怪的編碼問題,因爲一旦我在Notepad ++中重新啓動,問題似乎就解決了。我會自己做更多的分析。作爲未來項目的替代方案,我會將您的建議保留在上面。 – kingrichard2005 2011-05-06 17:39:23