单位转换是一个非常常见的场景:如果系统接收多个不同来源上报的尺寸信息,且需要进行计算时,转换为统一的单位可以大大降低后续计算的复杂度。
本文提供了两个方法,分别用来将长度按单位转换为毫米和重量转换为克:
将长度转换为毫米并向上取整:
public static int ToMillimeters(double value, string unit)//转为:毫米 { switch (unit) { case "angstrom": return Convert.ToInt32(Math.Ceiling(value * 1e-7)); // 埃 case "centimeters": return Convert.ToInt32(Math.Ceiling(value * 10)); // 厘米 case "decimeters": return Convert.ToInt32(Math.Ceiling(value * 100)); // 分米 case "feet": return Convert.ToInt32(Math.Ceiling(value * 304.8)); // 英尺 case "hundredths_inches": return Convert.ToInt32(Math.Ceiling(value * 0.254)); // 百分之一英寸 case "inches": return Convert.ToInt32(Math.Ceiling(value * 25.4)); // 英寸 case "kilometers": return Convert.ToInt32(Math.Ceiling(value * 1e6)); // 公里 case "meters": return Convert.ToInt32(Math.Ceiling(value * 1e3)); // 米 case "micrometer": return Convert.ToInt32(Math.Ceiling(value * 0.001)); // 微米 case "miles": return Convert.ToInt32(Math.Ceiling(value * 1.609e6)); // 英里 case "millimeters": return Convert.ToInt32(Math.Ceiling(value)); // 毫米 case "mils": return Convert.ToInt32(Math.Ceiling(value * 0.0254)); // 丝 case "nanometer": return Convert.ToInt32(Math.Ceiling(value * 1e-6)); // 纳米 case "picometer": return Convert.ToInt32(Math.Ceiling(value * 1e-9)); // 皮米 case "yards": return Convert.ToInt32(Math.Ceiling(value * 914.4)); // 码 default: throw new Exception("未知单位:" + unit); } }
将重量转换为克并向上取整:
public static int ToGrams(double value, string unit)//转为:克 { switch (unit.ToLowerInvariant()) { case "grams": return System.Convert.ToInt32(Math.Ceiling(value));//克 case "kilograms": return System.Convert.ToInt32(Math.Ceiling(value * 1000));//千克 1千克等于1000克 case "tons": return System.Convert.ToInt32(Math.Ceiling(value * 1000 * 1000));//吨 1吨等于1000000克 case "milligrams": return System.Convert.ToInt32(Math.Ceiling(value / 1000));//毫克 1毫克等于0.001克 case "hundredths_pounds": return System.Convert.ToInt32(Math.Ceiling(value * 453.59237 * 0.01));//百分之一磅 1百分之一磅等于4.5359237克 case "pounds": return System.Convert.ToInt32(Math.Ceiling(value * 453.59237));//磅 1磅等于453.59237克 case "ounces": return System.Convert.ToInt32(Math.Ceiling(value * 28.34952));//盎司 1盎司等于28.34952克 default: throw new Exception("未知单位:" + unit); } }
以上代码由 ChatGPT 辅助编写。