Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将IEnumerable<double>转换为double

将IEnumerable<double>转换为double
EN

Stack Overflow用户
提问于 2021-10-23 01:17:37
回答 2查看 120关注 0票数 1

我需要返回双精度数组中具有奇数索引的元素的和,这是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public static double EvaluateSumOfElementsOddPositions(double[] inputData)
    {
        
        var sum = inputData
            .Select((v, i) => new { Group = (i % 2 != 0), Value = v })
            .GroupBy(x => x.Group)
            .Select(g => g.Sum(y => y.Value));
        return sum ;
    }

但是我有一个错误:不能隐式地将IEnumerable转换为double。我不知道该怎么处理这件事。请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2021-10-23 01:20:29

您要查找的内容如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static double EvaluateSumOfElementsOddPositions(double[] inputData)
{
    return inputData
        .Where((data, index) => index % 2 != 0)
        .Sum();
}

如果您不打算在偶数索引上使用元素,则不需要对元素进行分组。

票数 0
EN

Stack Overflow用户

发布于 2021-10-23 02:01:16

尽管尝试使用LINQ来做这件事是一个很好的练习,但效率不是很高。

GroupBy将创建一个Dictionary<Tkey, ICollection<TResult>>,或者更准确地说:一个查找表。对于每个元素,它将提取密钥和TResult。对于每个元素,它将检查键是否在查找表中。

  • 如果没有,它会将TResult放入新的ICollection<TResult>中,并将键和集合添加到表中。
  • 如果键在表中,则会将TResult添加到集合的末尾。

这是相当多的工作,而实际上您唯一想要的是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static IEnumerable<double> ToEveryOtherDouble(this IEnumerable<double> doubles)
{
    bool everyOther = false;
    // will return elements with index 1, 3, 5, ...
    // start with true if you want 0, 2, 4, ...
   
    foreach (double d in doubles)
    {
        if (everyOther)
            yield return d;
        everyOther = !everyOther;
    }

用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IEnumerable<double> inputData = ....
double sum = inputData.ToEveryOtherDouble().Sum();

如果您坚持使用LINQ,请创建两个组:一组包含双精度的偶数索引,另一组包含双精度的奇数索引。

So组的关键:i % 2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double sum = inputData.Select( (d, index) => new
{
    Index = index,
    Value  = d,
})
.GroupBy(x => x.Index % 2,   // keySelector: groups with key 0 and key 1

    // parameter elementSelector: specify the elements of each group
    x => x.Value)            // as elements of the group, we only need the double

GroupBy结果:两组。键为0的组和键为1的组。键为0的组以偶数索引的双精度为元素,键为1的组的元素为奇数索引的双精度。

继续LINQ:如果您只想要偶数索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.Where(group => group.Key == 0).Sum();

结论

您可以选择:哪一个更易于阅读、重用、维护和单元测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double sum = inputData.Select( (d, index) => new
{
    Index = index,
    Value  = d,
})
.GroupBy(x => x.Index % 2, x => x.Value)
.Where(group => group.Key == 0)
.Sum();

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
double sum = inputData.ToEveryOtherDouble().Sum();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69686729

复制
相关文章
Java BigDecimal和double-BigDecimal转double-double转BigDecimal
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作。BigDecimal类的常用方法如表11-15所示。
全栈程序员站长
2022/08/19
2.4K0
double转BigDecimal精度丢失[通俗易懂]
很多人在double或float转BigDecimal时习惯使用BigDecimal的构造方法new BigDecimal(33.33),此种写法会存在精度丢失问题,下面就具体实例带大家体会:
全栈程序员站长
2022/09/05
2.4K0
double转bigDecimal精度问题
double转bigDecimal精度问题 需要用到bigDecimal的字符串构造来转
全栈程序员站长
2022/09/05
2K0
double 转 BigDecimal 精度问题
很明显,经过 double 转 BigDecimal 后,我们最初的值已经发生变化,所以通常我们在做类型转换的时候推荐使用 BigDecimal.valueOf(…);
全栈程序员站长
2022/09/05
1.4K0
c++ double转string
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/17
2.2K0
double 转 BigDecimal 失真问题
最近在看银行家算法的时候发现原博文中用的BigDecimal 有问题,所以总结了BigDecimal 失真问题,自己也总结了几种经常用的转换方式,并且列出来,以防以后忘记,代码如下
全栈程序员站长
2022/08/19
1K0
Double转BigDecimal的坑
掉支付Api的时候对金额是十分敏感的。这里转换的时候一定要注意。使用Double.toString(x),或者BigDecimal.valueOf(x)
全栈程序员站长
2022/09/05
1.5K0
java double转decimal_Java中Double与BigDecimal的相互转换
今天写代码过程中,发现一个Double的变量通过new BigDecimal(Double d)转换为BigDecimal时,有效数字改变了,如下:
全栈程序员站长
2022/08/31
1.8K0
dot net double 数组转 float 数组
本文告诉大家如果遇到 double 数组转 float 数组千万不要使用 Cast ,一般都使用 select 强转。
林德熙
2022/08/04
1.1K0
dot net double 数组转 float 数组
本文告诉大家如果遇到 double 数组转 float 数组千万不要使用 Cast ,一般都使用 select 强转。
林德熙
2018/09/18
1.3K0
java 的double转BigDecimal的坑
大家都知道java的double由于精度问题会给你挖无数个坑, 一般采取的方式都会避免使用, 但是android的dbflow对model里面的BigDecimal转换为sqlite table时, field type居然是text. 所以, model里面field的属性只能保持double
全栈程序员站长
2022/09/01
8840
The method assertEquals(double, double) from the type Assert is deprecated
assertEquals(double expected,double actul) 被废弃了,换成assertEquals(double expected,double actul,double delta)
全栈程序员站长
2022/09/14
6780
float double取值范围_double float区别
要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个东西,必须采用某种方法,比如,简单点的,float四个字节,前两个字节表示整数位,后两个字节表示小数位(这就是一种规则标准),这样就组成一个浮点数。而Java中浮点数采用的是IEEE 754标准。
全栈程序员站长
2022/11/03
1.9K0
Java Double转Bigdecimal丢失精度原因学习
注意事项: 不能直接使用Bigdecimal的构造函数传double进行转换,部分数值会丢失精度,因为计算机是二进制的Double无法精确的储存一些小数位,0.1的double数据存储的值实际上并不真的等于0.1 如该方式将0.1转换为Bigdecimal得到的结果是 0.1000000000000000055511151231257827021181583404541015625
全栈程序员站长
2022/09/05
3.8K0
Java中使用double转BigDecimal的问题
3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造:
全栈程序员站长
2022/09/01
1.4K0
Sort By Double
I have wrote a article which describes how to deal with a complicate data structure “sortable tree”. See here. As i said, it is so complicate that cann’t be maintain easily. Now, i have found a new fluent way to sort this tree:”Sorting by Double”. “Sorting
用户1172223
2018/01/26
9740
java字符串类型转换为int_java中double转int类型
由于double的范围比int数据类型大,所以当int值被赋给double时,java会自动将int值转换为double。
全栈程序员站长
2022/08/03
4.3K0
Java中double转BigDecimal的注意事项
3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造:
全栈程序员站长
2022/08/15
1.3K0
double转换为int以及浮点型相加损失精度问题
最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的。
陈灬大灬海
2019/03/19
3.7K0
double转换为int以及浮点型相加损失精度问题
double 转BigDecimal 丢失精度问题解决
错误方式 BigDecimal bigDecimal = new BigDecimal(0.11D); logger.info(“bigDecimal====”+bigDecimal); //bigDecimal0.11000000000000000055511151231257827021181583404541015625 正确方式: BigDecimal bigDecimal1 = bigDecimal.valueOf(0.11D); logger.info(“bigDecimal1“+bigDecimal1); // bigDecimal1====0.11
全栈程序员站长
2022/09/05
7020

相似问题

IEnumerable<double>转换为IEnumerable<DateTime>

122

将DStream[Double,Double]转换为RDD[(Double,Double)]

10

将double[][]转换为Double[][]

10

c++将vector<pair<double,double>>转换为double*,double*?

131

将List<double[]>转换为double[,]

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文