Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can you use Enum for Double variables?

Tags:

c#

enums

I have created a class for handling Unit Conversion in C#. It is not working as it should only returning strings.

Here is the class:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace RestaurantManagementSystem
{
    class unitHandler
    {
        public enum Units
        {
            Grams = 1,
            KiloGrams = 0.001,
            Milligram = 1000,
            Pounds = 0.00220462,
            Ounces = 0.035274,
            Tonnes = 0.000001,

            Litres = 1,
            Millilitres = 1000,
            Cups = 4.22675,
            FluidOunces = 33.814,
            TeaSpoon = 202.884,
            TableSpoon = 67.628,
            CubicFeet = 0.0353147,
            CubicInch = 61.0237,
            CubicCentimetres = 0.0001,
            CubicMetres = 0.001

        }

        public double Convert_Value(Units from, Units to, double quantity)
        {
            double converted_quantity = 0;

            double fromValue = quantity * Convert.ToDouble(from.ToString());

            converted_quantity = fromValue * Convert.ToDouble(to.ToString());

            return converted_quantity;
        }
    }
}

I would somehow want the enum type to contain the double values of conversion factors of each unit then use them for conversion and returning the converted quantity.

like image 864
John Ernest Guadalupe Avatar asked Feb 07 '13 05:02

John Ernest Guadalupe


3 Answers

No, The default type for enum is int or long and you could not use fractional numbers with it. You can use a struct or class intead of enum for double

public struct Units
{
        public const double Grams = 1;
        public const double KiloGrams = 0.001;
        public const double Milligram = 1000;
        public const double Pounds = 0.00220462;
        public const double Ounces = 0.035274;
        public const double Tonnes = 0.000001;
        // Add Remaining units / values
}

And use it like

double d = Units.KiloGrams;
like image 55
Adil Avatar answered Oct 17 '22 05:10

Adil


Nope:

I tried giving this to Visual Studio:

public enum Test : double
{
    Hello, World
}

And it said:

Type byte, sbyte, short, ushort, int, uint, long, or ulong expected

like image 4
Carson Myers Avatar answered Oct 17 '22 05:10

Carson Myers


You can't use float/double with enums. You may have to define constants.

public const double KiloGrams = 0.001;
like image 3
Habib Avatar answered Oct 17 '22 07:10

Habib