在检查 NULL 值时使用 parseFloat
use parseFloat while checking for NULL values
在 AngularJS 中,我试图弄清楚当前工人的标准工时与加班工时的多少。如果小时数是整数,我有一个公式可以很好地工作,但如果它有小数则失败。
我必须考虑可能没有提供其中一个号码的情况。这是我目前的做法:
laborItem.StraightHours = (parseFloat((laborItem.HoursB4Today | 0)) + parseFloat(laborItem.Hours | 0)) < 40 ?
(parseFloat(laborItem.Hours | 0)) :
40 - parseFloat(laborItem.HoursB4Today | 0);
这 returns 只有整个小时。
我也试过:
laborItem.StraightHours = (parseFloat((laborItem.HoursB4Today | 0).toFixed(2)) + parseFloat(laborItem.Hours | 0).toFixed(2)) < 40 ?
(parseFloat(laborItem.Hours | 0).toFixed(2)) :
40 - parseFloat(laborItem.HoursB4Today | 0).toFixed(2);
但是,这只是加了两位小数。我需要保留十进制值。
我该如何修改我的公式才能让它发挥作用?而且,我真的需要使用 parseFloat
吗,还是有 another/better 方式?
我猜你更想使用 ||
而不是 |
例如laborItem.HoursB4Today | 0
单个管道是按位或运算符,'converts' 您的数字(如果存在)转换为整数。 ||
通常用于提供默认值,以防第一个操作数的计算结果为 false
。
所以尝试改变表达式,例如
laborItem.HoursB4Today | 0
进入
laborItem.HoursB4Today || 0
您可以试试下面的代码
laborItem.HoursB4Today = parseFloat(laborItem.HoursB4Today || 0);
laborItem.Hours = parseFloat(laborItem.Hours || 0);
laborItem.StraightHours = (laborItem.HoursB4Today + laborItem.Hours) < 40 ? laborItem.Hours : 40 - laborItem.HoursB4Today;
我只是稍微修改了你的代码,但这可以确保将来使用 laborItem 的变量 (HoursB4Today,Hours) 保证它们指向一个数值。您不需要一次又一次地解析它们。
在 AngularJS 中,我试图弄清楚当前工人的标准工时与加班工时的多少。如果小时数是整数,我有一个公式可以很好地工作,但如果它有小数则失败。
我必须考虑可能没有提供其中一个号码的情况。这是我目前的做法:
laborItem.StraightHours = (parseFloat((laborItem.HoursB4Today | 0)) + parseFloat(laborItem.Hours | 0)) < 40 ?
(parseFloat(laborItem.Hours | 0)) :
40 - parseFloat(laborItem.HoursB4Today | 0);
这 returns 只有整个小时。
我也试过:
laborItem.StraightHours = (parseFloat((laborItem.HoursB4Today | 0).toFixed(2)) + parseFloat(laborItem.Hours | 0).toFixed(2)) < 40 ?
(parseFloat(laborItem.Hours | 0).toFixed(2)) :
40 - parseFloat(laborItem.HoursB4Today | 0).toFixed(2);
但是,这只是加了两位小数。我需要保留十进制值。
我该如何修改我的公式才能让它发挥作用?而且,我真的需要使用 parseFloat
吗,还是有 another/better 方式?
我猜你更想使用 ||
而不是 |
例如laborItem.HoursB4Today | 0
单个管道是按位或运算符,'converts' 您的数字(如果存在)转换为整数。 ||
通常用于提供默认值,以防第一个操作数的计算结果为 false
。
所以尝试改变表达式,例如
laborItem.HoursB4Today | 0
进入
laborItem.HoursB4Today || 0
您可以试试下面的代码
laborItem.HoursB4Today = parseFloat(laborItem.HoursB4Today || 0);
laborItem.Hours = parseFloat(laborItem.Hours || 0);
laborItem.StraightHours = (laborItem.HoursB4Today + laborItem.Hours) < 40 ? laborItem.Hours : 40 - laborItem.HoursB4Today;
我只是稍微修改了你的代码,但这可以确保将来使用 laborItem 的变量 (HoursB4Today,Hours) 保证它们指向一个数值。您不需要一次又一次地解析它们。