Actionscript 3 计算总工作小时数,其中小时数作为数字传递

Actionscript 3 计算总工作小时数,其中小时数作为数字传递,actionscript-3,apache-flex,flex3,Actionscript 3,Apache Flex,Flex3,我使用的是Flex3.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;

我使用的是Flex3.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分。。。请帮助解决这个问题


提前感谢。

我想问题是你使用的是10个基本值,但小时是60个基本值。因此,1,5小时并不意味着150分钟,就像在十进制系统中一样(例如,1.5米意味着150厘米),而是90分钟

我的建议是:使用本地日期类,或者选择只在一个单元中工作,以保持数学的一致性。但是Date类就是为了这些目的而创建的。减去两个Date.getTime(),然后将结果转换为新的日期,即可得到所需的结果。

        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();

我在这方面做了很多工作,发现了一个有趣的问题。。。。。 我已经找到了正确的答案。。继续发布那些有趣的问题

这是代码

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();

你说你给了我们细节,但你没有解释任何关于输入的内容。a、b、c和d代表什么?你希望代码如何工作?嗨,谢谢你的回答,但我给出的是静态的小时数。这就是我面临这个问题的原因。否则对我来说很简单。。。再次感谢。你的意思是说,当你给,比方说,0.5小时,它意味着半小时?不,0.5意味着0小时50分钟。如果用户输入2.23,则验证没有人可以输入0.61到0.99之间的值,即使不是0.00。这意味着2小时23分钟。只有当分钟数大于60时,此验证才有效。如果会议记录少于60分钟,则保持会议记录不变。不过你真的应该使用模函数。恭喜你,你刚刚重新实现了Date类的基本功能^^