ColdFusion - преобразование веса в фунтах в фунты и унции - PullRequest
1 голос
/ 19 августа 2011

Я пишу небольшую часть преобразования в 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>

Ответы [ 4 ]

3 голосов
/ 19 августа 2011

Примерно так (не всесторонне проверено).

РЕДАКТИРОВАТЬ: Если вход может быть отрицательным, используйте значение 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 голос
/ 19 августа 2011

Целочисленное деление и модуль должны дать вам необходимые значения.

<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>
0 голосов
/ 19 августа 2011

У вас есть то, что вам нужно.Чтобы извлечь количество фунтов, разделите на 16. Остаток («мод») - это унции.

<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>
0 голосов
/ 19 августа 2011

Это должно сделать это:

<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>
...