【问题标题】:Stuck and confused on conversion factor对转换系数感到困惑和困惑
【发布时间】:2021-11-28 22:50:36
【问题描述】:

我最近开始学习 C#,遇到了这个练习题:

给定以英里和公里为单位的距离,我应该找到更大的距离并返回值。

public static double Test8(double miles, double kilometers)
{
    double MtoKM = (1 miles = 1.609 kilometers);
    if (miles > kilometers)
    {
        MtoKM = miles;
    }
    return MtoKM; 
}

任何线索我做错了什么或提示?

【问题讨论】:

  • 你为什么认为你做错了什么?
  • 首先你要比较两个不同的单位
  • 抛开所有无效代码,从数学的角度来看一下。 1 miles = 1.609 kilometers 确实是一个有效的声明,但它不会产生您可以实际使用的值。为了做到这一点,您首先必须决定是否要转换为英里或公里,然后您必须摆脱那个等号。我们通过将一个组件除以另一个组件来做到这一点,1.609 km / 1 mi。后缀只是告知我们正在使用的单元,并且在技术上可以删除:1.609 / 1 = 1.609。现在你有了一个可以使用的值:MtoKM = 1.609
  • double MtoKM = (1 miles = 1.609 kilometers); - 你问为什么这是无效的 c# 语法?

标签: c# data-conversion


【解决方案1】:

我想我会这样写,以便更多地自我记录:

public static double GetGreaterOf(double miles, double kilometers)
{
    double milesInKm = miles * 1.609;
    if (milesInKm > kilometers) {
        return miles;
    } else {
        return kilometers; 
    }
}

您可以将其缩短为:

public static double GetGreaterOf(double miles, double kilometers) =>
    miles * 1.609 > kilometers ? miles : kilometers; 

但简洁并不总是与清晰相关.. ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2016-05-27
    • 2018-03-05
    • 2021-12-31
    • 2019-09-13
    • 2012-07-22
    相关资源
    最近更新 更多