[单位换算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[单位换算相关的知识,希望对你有一定的参考价值。
我正在开发单位换算工具,我对如何转换单位提出了疑问。我在互联网上发现了许多脚本,但是所有脚本都对所有单位值(天到秒,天到分钟,天到小时.......................)具有重复功能。 。 ) , 像这个http://dennisjaamann.com/blog/?p=44对于少量的单元(例如温度为3且长度为4的单元)非常好...
但是如果我需要提前一个,那么我将制作成千上万的代码,这将花费更多的时间和更少的性能。所以我猜想,使用一些数学方法更容易。
任何人都可以帮助我吗?
[一些需要在AS3中进行类似操作的在线JS转换器示例:
http://www.unitconverters.net/time-converter.html
非常感谢
您可以将所有单位预定义为一个公共单位。
例如
FOOT = 0.3048 metres
YARD = 0.9144 metres
INCH = 0.0254001 metres
等
然后,当有人想要将7英尺转换为码时。你做类似的事情。
convertUnits(feet, yards, 7);
function convertUnits(unitFrom:String, unitTo:String, amount:Number){
//(0.3048/0.9144)*7
return (myDictionary[unitFrom]/myDictionary[unitTo]) * amount;
}
可能工作吗?
+ 1 @trevor和查找表
这是更灵活的解决方案,只是请注意不要混合公斤和距离:)
特殊情况是时间转换,您可以在其中使用内置的Date对象:
// how much is 3775 seconds?
var date:Date = new Date( null, null, null, null, null, 3775 );
// 1h 2min 55s
trace( date.hours, date.minutes, date.seconds )
这很方便,因为它可以管理与月份中的日计数有关的特殊情况:28、29、30或31。
您仍然可以使用trevor方法手动设置对应关系(1H = 3600 s,1 min = 60 s,1 ms = 0.001 s等)例如下面的代码在距离(@trevor的例子)和时间之间创建一个对应的“表格”;使用距离很简单,但是使用时间则比较棘手:
package
{
import flash.display.Sprite;
public class Converter extends Sprite
{
private var MILLIMETER:Number = .001;
private var CENTIMETER:Number = .01;
private var DECIMETER:Number = .1;
private var METER:Number = 1;
private var FOOT:Number = 0.3048;
private var YARD:Number = 0.9144;
private var INCH:Number = 0.0254001;
private var MILLISECOND:Number = SECOND * 0.001;
private var SECOND:Number = 1;
private var MINUTE:Number = 60 * SECOND;
private var HOUR:Number = 60 * MINUTE;
private var DAY:Number = 24 * HOUR;
private var MONTH:Number = 30 * DAY;
private var YEAR:Number = 12 * MONTH;
public function Converter()
{
var seconds:Number = 10215464578;
var date:Date = new Date( null, null, null, null, null, seconds );
trace( date.fullYear, date.month, date.day, date.hours, date.minutes, date.seconds )
//does the same as
var ye:Number = convertUnits( seconds, SECOND, YEAR, true );
var mo:Number = convertUnits( seconds, SECOND, MONTH, true ) % ( YEAR / MONTH );
var d:Number = convertUnits( seconds, SECOND, DAY, true ) % ( MONTH / DAY );
var h:Number = convertUnits( seconds, SECOND, HOUR, true ) % ( DAY / HOUR );
var mi:Number = convertUnits( seconds, SECOND, MINUTE, true ) % ( MINUTE );
var s:Number = seconds % MINUTE;
trace( ye, mo, d, h, mi, s );
}
private function convertUnits( amount:Number, unitFrom:Number, unitTo:Number, floor:Boolean = false ):Number
{
var val:Number = ( unitFrom / unitTo ) * amount;
return floor ? int( val ) : val;
}
}
}
持续3775秒,它会给出:
1899 11 0 1 2 55
0 0 0 1 2 55
并且持续10215464578秒
2223 8 4 13 2 58
328 5 4 13 2 58
这意味着转换器不考虑日历本身;它计算时间量(一个月= 30天,这是不正确的。]
无论如何单位转换都将很快。有用于转换为任何类型单位的设置公式,因此只需在代码中重新创建它们即可。不仅如此,如果您全部使用javascript进行操作,那么无论如何,都是用户计算机必须执行所有计算,因此它的速度与他们的计算机一样快。]
[如果我是你,那么我将随即开始转换单位,并继续进行,直到最终得到可用的东西,然后对其进行重构。
为了节省代码,您可能希望以不同的方式工作-为每种转换类型定义一个“公式”,并且在请求转换时应用正确的公式-这将需要一个接受值和公式并根据输入的值计算公式并吐出结果。但是,这仍然需要您-开发人员-输入所有公式,并编写代码以找到正确的转换公式并执行。可能就这么多。
祝你好运
现在,对于日期和时间的转换,计算和格式设置(包括i18n),可以使用MomentJs。
对于所有其他转换,由于不需要类似的解决方案,我也开始研究MeasurementJs,该解决方案也试图针对诸如MomentJs的精美简单的API。
[[Kg至lbs] [1]转换器是一个非常智能且方便的公式系统,该系统能够将任何公斤值转换为磅,也可以用其他方式转换。这种解决方案的基本思想是使人们的生活更轻松,并且不因繁琐的计算而打扰他们。有时候,例如在体育馆里时,您需要将公斤转换为磅的选项,而您实际上不知道要举多少公斤。公斤到磅的转换可以通过在代码公式中实现而实现,这些公式基本上可以计算特定人员给出的每个值。有时可以在新的手机或智能手表中找到这种解决方案。https://howkgtolbs.com/
以上是关于[单位换算的主要内容,如果未能解决你的问题,请参考以下文章