2011-12-09 117 views
-1

我正在使用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 ...请帮助解决这个问题。

在此先感谢。

+5

你说你给我们的细节,但你没有解释任何关于输入。什么是a,b,c和d意味着代表什么?你如何期待代码的工作? –

回答

0

什么我曾就这一个了很多,找到有趣的一个问题..... ,我发现为正确答案..请发帖称有趣的问题。

这里是代码。

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

恭喜,您刚刚重新实现了Date类的基础知识! ^^ – LoremIpsum

1

我想问题是你正在使用十个基于值的工作,但小时基于60的值。所以1.5小时并不意味着150分钟,例如十进制(1.5米意味着150厘米),而是90分钟。

我的建议:使用本地Date类,或者选择只在一个单元中工作,以保持数学的一致性。但是Date类是为了这些目的而制作的。对两个Date.getTime()进行抽象,然后将结果转换为一个新的Date可以给你想要的东西。

+0

嗨,谢谢你的回答,但我正在静静地给那几个小时。这就是为什么我面临这个问题。否则对我来说非常简单......再次感谢。 –

+0

你的意思是说,当你说,0.5小时,这意味着半小时? – LoremIpsum

+0

不,0.5意味着0小时50分钟。 确认没有人可以在0.61到0.99之间输入值,即使不是0.00 如果用户输入2.23,则表示2小时23分钟 –

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 = 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(); 
+0

这仅在分钟数大于60时才起作用。如果分钟数小于60,则离开现在的会议纪要。你应该真的在使用模函数。 – ckoo