Рассчитать общее количество рабочих часов, где часы прошли как число - PullRequest
0 голосов
/ 09 декабря 2011

Я использую FLEX версии 3.0 Я хочу рассчитать общее рабочее время. Я даю вам детали и то, что я сделал в этом.

var a:Number = 2.00;
            var b:Number = 2.00;
            var c:Number = 1.45;
            var d:Number = 1.30;

            var total:Number = a+b+c+d;
            var totalmin:int = total;
            var temp:Number = total - totalmin;
            var tem2:Number = 0.60 - temp; 
            var workhour:Number = 0;

            while(total >= 0)
            {
                workhour += 1;
                total -= 1.00;  
            }

            var tot:Number = workhour + tem2;

            txtTotal.text = tot.toString();

Я хочу результат 7.15, а не 6.75. В настоящее время я получаю 6,85 ... Пожалуйста, помогите решить эту проблему.

спасибо заранее.

Ответы [ 3 ]

1 голос
/ 09 декабря 2011

Полагаю, проблема в том, что вы работаете с десятью основанными значениями, но часы - это 60 основанных значений.Таким образом, 1,5 часа - это не 150 минут, как в десятичной системе (например, 1,5 метра означает 150 сантиметров), но 90 минут.

Мой совет: используйте собственный класс Date или выберитеработать только в подразделении, чтобы быть последовательным в вашей математике.Но класс Date сделан для этих целей.Вычитание двух Date.getTime () и затем преобразование результата в новую Date дает вам то, что вы хотите.

0 голосов
/ 09 декабря 2011

Я много работал над этим и нашел один из интересных вопросов ..... и я нашел правильный ответ для этого .. Продолжайте публиковать эти интересные вопросы.

вот код.

var a:Number = 2.23;
var b:Number = 2.36;
var c:Number = 1.18;
var d:Number = 1.13;

var totalHours = 0.0;

var inta:int = a;
var numa:Number = a - inta;
var intb:int = b;
var numb:Number = b - intb;
var intc:int = c;
var numc:Number = c - intc;
var intd:int = d;
var numd:Number = d - intd;


var total:int = inta + intb + intc + intd;
var totalsec:Number = numa + numb + numc + numd;
var tempsec:int = totalsec * 100; 

var temp:int = tempsec/60;

total += temp;

var sec:Number = tempsec - (temp*60);

sec = sec/100;

totalHours = total + sec;

txtTotal.text = totalHours.toString();
0 голосов
/ 09 декабря 2011

За то, что вы хотите

        var a:Number = 2.00;
        var b:Number = 2.00;
        var c:Number = 1.45;
        var d:Number = 1.30;

        var total:Number = a+b+c+d;
        var totalmin:int = total;
        var temp:Number = total - totalmin;
        var tem2:Number = temp - 0.6; // !!!This line changes!!!
        var workhour:Number = 0;

        while(total >= 0)
        {
            workhour += 1;
            total -= 1.00;  
        }

        var tot:Number = workhour + tem2;

        txtTotal.text = tot.toString();
...