Perl中的对称和传递自定义单位转换

时间:2014-09-19 19:49:25

标签: perl unit-conversion

我已经定义了以下自定义单位(伪代码):

unix_days = unix_seconds/86400; 
nasa_seconds = unix_seconds - 946728000; 

这可让我直接将unix_seconds转换为unix_days或转换 unix_secondsnasa_seconds

但是,我无法直接将unix_days转换回unix_seconds 没有写另一个公式。

同样,我无法在不写作的情况下将nasa_seconds转换为unix_days 其他公式。

是否有一个聪明的Perl子例程或包可以让我这样做 没有写其他功能?更具体地说,是一个定制单元 转换包:

  • 可以判断单位转换函数的反函数。例如, 与f(x)=x/86400相反的是g(y)=y*86400

  • 可以根据需要应用传递性。例如,如果unix_seconds = nasa_seconds + 946728000(通过功能反向)和unix_days = unix_seconds/86400,我们可以将这些结合起来直接从nasa_seconds转换为unix_days

我可以用不寻常的方式编写我的转换公式 需要。例如,Celsius到Fahrenheit可以写成:

C to F: *1.8 +32 

这种形式很容易反转:只需按照后面和后面的步骤操作即可 反过来,即:

F to C: -32 /1.8 

这样的事情存在吗?

1 个答案:

答案 0 :(得分:5)

Physics::Unit应该提供您需要的设施。