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.
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;
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
You can't use float/double with enums. You may have to define constants.
public const double KiloGrams = 0.001;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With