首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建有效的货币/单位转换器?

如何创建有效的货币/单位转换器?
EN

Stack Overflow用户
提问于 2012-03-17 19:19:32
回答 5查看 1.7K关注 0票数 3

关于如何创建高效的程序,我有一个一般性的问题。例如,我为Blackberry (如果您想要查看它:)编写了一个单元转换程序,它在5-7个不同的单位之间转换。为了对此进行编码,我采用了蛮力的方法,只为所有可能的单元创建了方法。所以,例如,我创建了所有的方法:厘米到英寸,厘米到米,英寸到厘米,英寸到米,米到厘米,米到英寸,等等。

我的问题是:是否有一种更有效的编码方法?因为当我必须添加一个单元时,它会变得很痛苦,因为我必须创建另一组方法。

谢谢!(如果我听起来很蠢,很抱歉。)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-17 19:25:06

简单:只需选择一个“标准”单位(例如SI单位),并转换为它和从它。例如,做一个“英寸到米”,“米到英寸”,“厘米到米”,“米到厘米”等等,转换从英寸到厘米,简单地称为“英寸到米”,然后称为“米到厘米”。

要添加一个新的单元,只需要添加两个方法:"NewUnit To meters“和"meters to NewUnit”。

当然,这取决于你如何组织你的方法。例如,您可以有一个将单元作为参数的方法。

票数 4
EN

Stack Overflow用户

发布于 2012-03-17 19:24:11

使用SI单位(你可以使用任何单位,但由于大多数单位是定义的wrt单位,这是最明智的海事组织)作为基础和转换因素的所有其他。

这样,您只需存储一个单位值,最多可以在两个步骤从单元A转换为B。这是O(N)而不是O(N^2)的朴素方法。此外,它还允许使用枚举和一个函数轻松地完成这一任务。添加更多的单位只是意味着将单位添加到枚举和(1!)正确换算系数

票数 3
EN

Stack Overflow用户

发布于 2012-03-17 19:24:49

是的有。

  • 对于每种类型的测量(例如距离、时间、能量、金钱等),定义一个基本单位。如果是的适用,我建议你这么做。否则,选择你想要的。
  • 对于所有受支持的单元,让两个方法(用OO风格编写,可以是任何东西)
    1. base to_base_unit()
    2. from_base_unit(base)

  • 对于每一个单位转换,进行两步转换。将a转换为bb.from_base_unit(a.to_base_unit())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9752962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档