Javascript parseFloat不';我不能给出确切的数值
我正在从事一个项目,该项目需要“小费箱”计算系统。正如您在代码片段中看到的,它没有像我预期的那样工作。我怎样才能解决这个问题Javascript parseFloat不';我不能给出确切的数值,javascript,jquery,parsefloat,Javascript,Jquery,Parsefloat,我正在从事一个项目,该项目需要“小费箱”计算系统。正如您在代码片段中看到的,它没有像我预期的那样工作。我怎样才能解决这个问题 $(“选择[name='tip'])。在('change',function()上{ var thiz=$(本); var content_credit=parseFloat($(“#f#u content_credit”).text(); var total_balance=parseFloat($(“#f#u total_balance”).text(); var
$(“选择[name='tip'])。在('change',function()上{
var thiz=$(本);
var content_credit=parseFloat($(“#f#u content_credit”).text();
var total_balance=parseFloat($(“#f#u total_balance”).text();
var tip=parseFloat(thiz.val());
控制台日志(总余额+“-”+内容积分+“-”+提示);
$(“#f#u#u#u#u#u#u#u#u#u#u#u#u#u#u#u;
});代码>
总余额
45.67
信用
10.20
小费箱
0克雷迪
0.1学分
0.2学分|不起作用
0.3学分
0.8学分
1.2信贷|不起作用
确认计算后
总余额-贷方-提示
35.47
像这样尝试,使用toFixed()
表示小数点
$(“选择[name='tip'])。在('change',function()上{
var thiz=$(本);
var content_credit=parseFloat($(“#f#content_credit”).text()).toFixed(2);
var total_balance=parseFloat($(“#f_total_balance”).text()).toFixed(2);
var tip=parseFloat(thiz.val()).toFixed(2);
控制台日志(总余额+“-”+内容积分+“-”+提示);
$(“#f#u后#u确认”).text(parseFloat(总#u余额-内容#u信用提示).toFixed(2));
});代码>
总余额
45.67
信用
10.20
小费箱
0克雷迪
0.1学分
0.2学分|不起作用
0.3学分
0.8学分
1.2信贷|不起作用
确认计算后
总余额-贷方-提示
35.47
该问题是由于浮点计算不一致造成的。你可以在评论中提到的@Alexis链接上了解更多
要解决实际问题,可以对最终求和值调用toFixed()
,将其格式化为所需的小数位数。试试这个:
$(“选择[name='tip'])。在('change',function()上{
var thiz=$(本);
var content_credit=parseFloat($(“#f#content_credit”).text()).toFixed(2);
var total_balance=parseFloat($(“#f_total_balance”).text()).toFixed(2);
var tip=parseFloat(thiz.val()).toFixed(2);
var final=(总余额-内容-信用-提示)。toFixed(2);
控制台日志(最终);
$(“确认后的f”)文本(最终文本);
});代码>
总余额
45.67
信用
10.20
小费箱
0克雷迪
0.1学分
0.2学分|现在有效
0.3学分
0.8学分
1.2信贷|现在有效
确认计算后
总余额-贷记-小费
35.47
与数学四舍五入(100*tot)/100一起使用代码>其将用0.12位数固定
$(“选择[name='tip'])。在('change',function()上{
var thiz=$(本);
var content_credit=parseFloat($(“#f#u content_credit”).text();
var total_balance=parseFloat($(“#f#u total_balance”).text();
var tip=parseFloat(thiz.val());
var tot=总余额-内容-信用提示;
var cal=数学四舍五入(100*tot)/100;
控制台日志(cal);
$(“#f#u后#u确认”)。文本(cal);
});代码>
总余额
45.67
信用
10.20
小费箱
0克雷迪
0.1学分
0.2学分|不起作用
0.3学分
0.8学分
1.2信贷|不起作用
确认计算后
总余额-贷方-提示
35.47
这可以帮助您欢迎来到浮点数学的世界!请注意,parseFloat()
是一个原生JS方法。这与我无关jQuery@Alexis我几乎忍不住要结束了,因为这看起来是你最好的选择,因为它非常适合货币数据。@Alexis我不会说这在技术上是一个骗局,因为OP在问“我如何解决这个问题”,不是“为什么会发生”0.2
和1.2
选项仍然显示OP不期望的值。确认后,您需要调用toFixed()
,对您在的文本()中放置的值进行调用toFixed()
。
@rorymcrossan Yes同意您的意见感谢您的注意,现在已更改。