您可以使用decimal.Parse
與適當的NumberFormatInfo.NumberNegativePattern
是追加減去自定義格式提供= >formatProvider.NumberNegativePattern = 3;
:
var formatProvider = (NumberFormatInfo)NumberFormatInfo.InvariantInfo.Clone();
formatProvider.NumberNegativePattern = 3;
var numbers = File.ReadLines(yourFilePath)
.Select(l => l.TryGetDecimal(formatProvider))
.Where(n => n.HasValue)
.Select(d => d.Value/100.0M);
使用了本擴展到解析字符串中的LINQ查詢轉換爲十進制:
public static decimal? TryGetDecimal(this string item, IFormatProvider formatProvider = null, NumberStyles nStyles = NumberStyles.Any)
{
if (formatProvider == null) formatProvider = NumberFormatInfo.CurrentInfo;
decimal d = 0m;
bool success = decimal.TryParse(item, nStyles, formatProvider, out d);
if (success)
return d;
else
return null;
}
如果你希望所有的小數的總和,你可以使用Enumerable.Sum
:
decimal sum = numbers.Sum(); // 0
不行,你得寫一個或找到免費的圖書館是其他人已經不得不像這樣轉換數字。 – juharr