Eri*_*man 1 .net c# parsing casting rounding
所以我要说我有一个字符串数组:
string[] values = new[] { "1", "2", "3", "1.5", "56.5", "8" };
Run Code Online (Sandbox Code Playgroud)
让我们说我必须遍历这些值并执行以下操作:
将它舍入到最接近的偶数(如果它只是一个双数)
四舍五入后删除数字的小数部分.
如果数字为负数,请删除该符号.
string[] values = new[] { "1", "2", "3", "1.5", "56.5", "8" };
for (int i = 0; i < values.Length; i++)
{
file[i].Value = ((Int32)Math.Abs(Math.Round(Double.Parse(values[i]), MidpointRounding.ToEven))).ToString();
}
Run Code Online (Sandbox Code Playgroud)
这与基本相同:
string[] values = new[] { "1", "2", "3", "1.5", "56.5", "8" };
for (int i = 0; i < values.Length; i++)
{
String strValue = values[j];
Double dblValue = Double.Parse(strValue);
Double dblRoundedValue = Double.Parse(dblValue);
Int32 intValue = (Int32)dblRoundedValue;
Int32 intAbsValue = Math.Abs(intValue);
String finalValue = intAbsValue.ToString();
file[i].Value = finalValue;
}
Run Code Online (Sandbox Code Playgroud)
该阵列中可能有超过一百万个值,那么有没有办法使这个过程更有效?
此操作本质上是可并行化的(如果这是一个单词).一个Parallel.ForEach循环,并行LINQ管道,或者类似的东西,将提高执行时间.
string[] values = new[] { "1", "2", "3", "1.5", "56.5", "8" };
var file = values.AsParallel()
.Select(s => Double.Parse(s))
.Select(d => (int)Math.Round(d))
.Select(i => Math.Abs(i).ToString())
.ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |