长度计算器英尺和英寸

时间:2014-03-23 11:42:14

标签: c# console-application calculator

在我的if语句"(LengthCalculatorOption == 1)" 例如,我想要187.96cm转换为英尺和英寸,例如6英尺2英寸。我怎么做? 因为在我当前的代码中,它将显示6.17feet并始终为0ins。我不明白为什么。

 static void Main(string[] args) {

            double Centimetres = 0.0, Feet = 0.0, Inches = 0.0;
            string AnotherConversion = null;
            string LengthCalculatorMenu;
            int LengthCalculatorOption;
             do{
                LengthCalculatorMenu = ("Enter 1) Convert centimetres to feet and inches:"
                                     +  "\nEnter 2) Convert feet and inches to centimetres:");
                Console.Write(LengthCalculatorMenu);
                LengthCalculatorOption = int.Parse(Console.ReadLine());

                if (LengthCalculatorOption == 1) {
                    Console.WriteLine("Please Enter the Centimetres(cm) that you wish to convert to feet and inches");
                    Centimetres = double.Parse(Console.ReadLine());
                    Feet = (Centimetres / 2.54) / 12;
                    Inches = (Centimetres / 2.54) - (Feet * 12);
                    Centimetres = ((Feet * 12) + Inches) * 2.54;
                    Console.WriteLine("\nThe equivalent in feet and inches is {0:C} ft {1:G} ins", Feet, Inches);
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    AnotherConversion = Console.ReadLine();
                } else if (LengthCalculatorOption == 2) {
                    Console.WriteLine("Please Enter the Feet");
                    Feet = double.Parse(Console.ReadLine());
                    Console.WriteLine("Please Enter the Inches");
                    Inches = double.Parse(Console.ReadLine());
                    Centimetres = ((Feet * 12) + Inches) * 2.54;
                    Console.WriteLine("\nThe equivalent in centimetres is {0:G}cm", Centimetres);
                    Console.Write("\nWould you like to make an another conversion? \n\n(Enter Y to make an another conversion/Enter any other key to exit):");
                    AnotherConversion = Console.ReadLine();
                } else {
                    Console.WriteLine("\n\a\t Invalid Option!Option Must be 1 or 2");
                }
             } while (AnotherConversion == "y" || AnotherConversion == "Y");

5 个答案:

答案 0 :(得分:7)

试试这个:

Feet = (Centimetres / 2.54) / 12;
int iFeet = (int)Feet;
inches = (Feet - (double)iFeet) * 12;

详细说明一下:

您将脚定义为double,这意味着它将是一个十进制值。因此,除非您除以12,否则它可以成为十进制表示。

我的代码所做的是将Feet转换为整数(在这种情况下将其舍入为6)。然后我们减去Feet的双重版本(在这种情况下为6.17),等于.17(余数)。我们将它乘以12,从.17英尺转换为英寸

修改

根据Scott的评论进行扩展,这将是另一种方式

int totalInches = (Centimetres / 2.54); // This will take a floor function of Centimetres/2.54
int Feet = (totalInches - totalInches % 12) / 12; // This will make it divisible by 12
int inches = totalInches % 12; // This will give you the remainder after you divide by 12

答案 1 :(得分:1)

将其保留为double,请使用:

double inp = 12.75; // e.g.

double feet = Math.Floor(inp);
double inches = (inp - feet) * 12.0;

答案 2 :(得分:1)

要以厘米为单位计算以英尺为单位的值,您可能希望这样做:

double centimeters = 187.96;
double inches = centimeters/2.54;
double feet = Math.Floor(inches / 12);
inches -= (feet*12);

一般来说,一个人应该转换到最基本的水平,然后计算你的方式。这样,您只进行一次转换工作,而不必重复转换计算。在这种意义上,我将厘米转换为英寸,然后计算以英寸为单位的英尺数,然后从最终英寸值中减去那么多。

所以,如果我有38英寸,我会有Math.Floor(38 / 12)英尺,或3.然后inches将被设置为38 - (3*12),即2,给出最终结果结果是3英尺2英寸。

答案 3 :(得分:0)

试试这个:

 double F = Math.Floor(Centimetres * 0.0328084);
 Feet = Centimetres * 0.0328084;
 Inches = (Feet - F) * 12;

1 ft = 0.30480m

答案 4 :(得分:0)

一些通用方法:

public static class Converter
{
    public static (int Feet, double Inches) CentimetresToFeetInches(double centimetres)
    {
        var feet = centimetres / 2.54 / 12;
        var iFeet = (int)feet;
        var inches = (feet - iFeet) * 12;

        return (iFeet, inches);
    }

    public static string CentimetresToFeetInchesString(double centimetres, string footSymbol = " foot", string inchesSymbol = " inches")
    {
        (var feet, var inches) = CentimetresToFeetInches(centimetres);
        return $"{feet:N0}{footSymbol}, {inches:N0}{inchesSymbol}";
    }
}

用法:

(var feet, var inches) = Converter.CentimetresToFeetInches(178);
//feet == 5
//inches == 10.078740157480315

var feetInchesString = Converter.CentimetresToFeetInchesString(178);
//5 foot, 10 inches