编写单位转换程序的最简单方法

Mik*_*yev 0 algorithm

我的问题是语言独立.我想写一个简单的单位转换程序.有转换类型,根据类型有单位.例如,如果我们将长度作为转换类型,那么将有Meter,Inch,Foot,Kilometer,Mile等.想象一下,有两个下拉框 - 一个方向来自,而另一个是方向.每个下拉框下方都有一个文本框.简单地说,当我在左侧选择英寸并在右侧选择英里并在任一文本框中键入任何数字时,我希望等效项出现在另一个文本框中.就像任何正常的单位转换app.Now我对此非常困惑.只是用if ... else写一个长代码,如果这样做的唯一方法呢?你会以什么方式跟随专业人士?

Zet*_*eta 7

使用通用计算单位,例如仪表.假设您使用米来计算所有内容,用户选择"英寸到英尺".然后你必须计算第一个单位为米和米再次到英里.这样,您只需要为meter-> unit 实现缩放系数x(您可以使用1/x来完成meter <-unit).

因此,如果您有两个下拉框和一个转换列表meter-> toUnit(unit),它将单个仪表转换为第二个单位的相应值,那么您只需使用

userInput * 1/meter->toUnit(firstUnit) * meter->toUnit(secondUnit) = output
Run Code Online (Sandbox Code Playgroud)

编辑:为了确保数值稳定性,我建议您使用整数值和非常小的参考单位(例如毫米或甚至微米).见评论.

  • 我想补充一点,所有计算都应该使用具有任意精度的有理或十进制表示,而不是浮点(IEEE或其他),以避免表示和使用有限长度二进制表示的轻微差异. (3认同)