【问题标题】:Cannot implicitly convert type 'double' to 'int'无法将类型“double”隐式转换为“int”
【发布时间】:2020-05-03 06:24:02
【问题描述】:

我是一名初学者,正在经历一些足够简单的挑战,但我似乎无法弄清楚这个问题。代码只是一个用于查找数组中最大和最小数字的函数,即使这不是一种有效的方法,我也不知道代码是从哪里得到一个 int 的。任何人都可以阐明这一点?

using System;
using System.Linq;
public class Program 
{
    public static double[] FindMinMax(double[] values) 
    {

        double small = values.Min();
        double big = values.Max();

        double result = new double[small, big];

        return result;
    }
}

【问题讨论】:

    标签: c# arrays sorting variables type-conversion


    【解决方案1】:

    我不知道代码是从哪里得到一个 int 的

    您在这里 (new double[small, big]) 要求它创建一个二维(矩形)数组,其维度(例如)17.2 × 42.6 - 它希望成为整数的那些维度。


    我认为您的意思是创建一个向量(从零开始的一维数组),其中两个值作为 contents:

    double[] result = new double[] {small, big};
    

    虽然我怀疑值元组会更有效地工作,即

    public static (double Min, double Max) FindMinMax(double[] values) 
    {
        // ...
        return (small, big);
    }
    

    您可能还想研究是否是最佳的(可能不是)编写一个显式的单个循环来检查每个步骤中的最小值和最大值,而不是两次迭代。但只要数据不是庞大,就根本没有关系。如果它很大,那么你就会进入诸如对数组进行分片和在不同的分片上执行并行最小/最大,然后聚合分片结果等主题。这里可能还有 SIMD 选项。

    【讨论】:

    • 非常感谢,我在转换过程中非常着迷,以至于我没有意识到我在数组基础上搞砸了多少。为清除它而欢呼,以后也可以尝试循环方法。现在主要只专注于学习
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多