如何解决将货币字符串转换为数组和总计
我正在使用c#,我有一串现金条目,需要将它们加在一起以获得总计
arrTotalSplitCosts.Text = "24.90,10.60,1.90,20";
以下内容可以正常工作,但是,当我添加小数点或字符串值以用生成的数字替换数组中的数字时,以下内容就会崩溃
int[] arr = new int[] { 1,2,3 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
我想从表单发布中获取这些值:
arrTotalSplitCosts.Text = "24.90,20";
总计它们,例如总计= 57.40
任何人都有任何想法,我很挣扎,在此先感谢。
解决方法
请勿使用,
作为分隔符。您可以选择;
。
对于10.000,00格式样式
var sum = arrTotalSplitCosts.Text.Split(';').Select(decimal.Parse).Sum()
用于10,000.00格式样式
var sum = arrTotalSplitCosts.Split(';').Select(a => decimal.Parse(a,CultureInfo.InvariantCulture)).Sum()
,
输入是string
(不是string
的数组,而是单个string
)。
然后,您必须使用该string
并将其拆分为列表或数组。
这些值带有小数,因此不能将它们视为int
。 int
是整数;整数。您应该将数据作为double
的列表来处理。
从string
转换为double
时,应使用tryparse
,因为您可以更严格地执行转换并随时检查异常。
我在下面放了一个示例,但是请注意,我使它比平时更加冗长,只是(希望)更清楚地显示每个步骤。
如果我要实际执行此操作,我会更多地使用Linq并将多个步骤合并为一行。
是这样的:
using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var inString = "24.90,10.60,1.90,20";
var stringValues = inString.Split(',');
List<double> doubleValues = new List<double>();
foreach(string v in stringValues){
double outNum;
double num = double.TryParse(v,out outNum)? outNum : 0;
doubleValues.Add(num);
}
Console.WriteLine(doubleValues.Sum(i => i)); // output = 57.4
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。