我正在写一篇ColdFusion CFSCRIPT中的转换文章。
我需要将重量换算成磅和盎司。
所以,3.1565需要变成3磅和3盎司。 1.512将变为1磅和9盎司(围绕盎司) 0.25将变为0磅和4盎司。
我的想法是以磅的总重量乘以十六,这将给我总盎司。然后我需要通过除以十六来提取均匀的磅数,其余的将是盎司。我真的不知道如何准确地使用有效的代码。
<cfscript>
MyPounds = 0;
MyOunces = 0;
ThisPounds = 2.12345;
MyOunces = (ThisPounds * 16);
// EXTRACT THE NUMBER OF POUNDS
// REMAINDER IS OUNCES - ROUND UP
}
</cfscript>
答案 0 :(得分:3)
像这样(没有经过广泛测试)。
编辑:如果输入可能为负数,请使用abs()
值进行计算
<cfset theInput = 0.25>
<!--- round down to get total pounds --->
<cfset lbs = int(theInput)>
<!--- extract remainder. multiply by 16 and round up --->
<cfset ounces = ceiling((theInput - lbs) * 16)>
<cfoutput>#lbs# pounds #ounces# ounces</cfoutput>
答案 1 :(得分:1)
整数除法和模数应该为您提供所需的值。
<cfscript>
MyPounds = 0;
MyOunces = 0;
ThisPounds = 2.12345;
MyOunces = (ThisPounds * 16);
// EXTRACT THE NUMBER OF POUNDS
weightInPounds = MyOunces \ 16;
// REMAINDER IS OUNCES - ROUND UP
remainderOunces = ceiling(MyOunces MOD 16);
</cfscript>
答案 2 :(得分:0)
这应该这样做:
<cffunction name="PoundConverter" returntype="string">
<cfargument name="Pounds" type="numeric" required="true" hint="" />
<cfset var TotalPounds = Fix(Arguments.Pounds) />
<cfset var TotalOunces = Ceiling((Arguments.Pounds - TotalPounds) * 16) />
<cfreturn TotalPounds & " pounds and " & TotalOunces & " ounces" />
</cffunction>
<cfoutput>
#PoundConverter(3.1565)#<br />
#PoundConverter(1.512)#
</cfoutput>
答案 3 :(得分:0)
你几乎拥有你需要的东西。要提取磅数,除以16.余数(“mod”)是盎司。
<cfscript>
function poundsandounces( initvalue ) {
var rawvalue = val( initvalue ) * 16;
var lbs = int( rawvalue / 16 );
var oz = ceiling( rawvalue % 16 );
return "#lbs# pounds #oz# ounces";
}
</cfscript>
<cfoutput>#poundsandounces( 0.25 )#</cfoutput>