微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将货币字符串转换为数组和总计

如何解决将货币字符串转换为数组和总计

我正在使用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并将其拆分为列表或数组。

这些值带有小数,因此不能将它们视为intint是整数;整数。您应该将数据作为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 举报,一经查实,本站将立刻删除。