警报(5.30/0.1);
这给了52.99999999999999但应该是53.任何人都可以说出如何以及为什么?
我想找到一个数字可以被给定的数字整除.请注意,其中一个数字可能是浮点数.
如何将数字(金钱)分成x数字,数字可以是一个或两个小数或没有它
比如1000或100.2或112.34
我希望能够以这个数字都一样分成X部分人,但是,如果它不是奇数额外数到最后一个.
例如
3856 / 3
1285.33
1285.33
1285.34
Run Code Online (Sandbox Code Playgroud) 我已经编写了一个函数来计算我网站上的付款费用,但它在javascript和php中给出了不同的结果.您应该将此代码复制到htm/html文件.
bug.php中的代码:
<table style="background-color:#ccc; width:600px; font-family:Tahoma">
<tbody><tr style="background-color:#00CCFF"><td>original number</td><td>phpToFixed()</td><td>jsToFixed()</td><td>phpCalc</td><td>jsCalc</td></tr>
<script>
function jsToFixed(i) {
return(Math.floor(i * 100) / 100);
}
function jsCalc(ob){
val=jsToFixed(ob);
if(val>0&&val!=''){
result = jsToFixed(0.95*ob);
}else{
result = 0;
}
if(result==val&&result!=0){
result-=0.01;
}
return result;
}
<?php
function phpToFixed($amount){
$inp= floor($amount * 100) / 100;
return $inp;
}
function phpCalc($amount){
$inp= phpToFixed($amount);
if($inp>0&&$inp!=''){
$result = phpToFixed($amount*0.95);
}else{
$result = 0;
}
if($result==$inp&&$result!=0){
$result-=0.01;
}
return $result;
}
for($i=0;$i<1;$i+=0.009){
?>
document.write("<tr><td class='org'><? echo $i; ?> </td><td class='fix'> <? echo phpToFixed($i); …Run Code Online (Sandbox Code Playgroud) 我在文本框上的更改事件上有以下 Jquery 函数
$('input:text[id$=txtText1]').change(GetTotal);
Run Code Online (Sandbox Code Playgroud)
这会调用 GetTotal 函数
function GetTotal() {
var value1 = txtText1.val();
var value2 = txtText2.val();
var sum = add(value1, value2)
$('input:text[id$=txtSubTotals]').val(sum);
}
Run Code Online (Sandbox Code Playgroud)
这是添加功能
function add() {
var sum = 0;
for (var i = 0, j = arguments.length; i < j; i++) {
if (IsNumeric(arguments[i])) {
sum += parseFloat(arguments[i]);
}
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
在文本框 1 中,该值为 1.45,在文本框 2 中,该值为 1.44,而不是 2.89。我得到以下值 2.8899999999999997
可能重复:
JavaScript的数学是否被破坏?
假设,
var x = .6 - .5;
var y = 10.2 – 10.1;
var z = .2 - .1;
Run Code Online (Sandbox Code Playgroud)
比较结果
x == y; // false
x == .1; // false
y == .1; // false
Run Code Online (Sandbox Code Playgroud)
但
z == .1; // true
Run Code Online (Sandbox Code Playgroud)
为什么Javascript会显示这样的行为?
什么样的错误?我该如何解决?
1.1 - 1 = 0.10000000000000009
1.0000001+1 = 2.0000001000000003
划分两个IEEE 754浮点数的最安全的方法是什么?
就我而言,语言是JavaScript,但我想这并不重要.目标是避免正常的浮点陷阱.
我已经读过,人们可以使用"修正系数"(cf)(例如10提升到某个数字,例如10 ^ 10),如下所示:
(a * cf) / (b * cf)
Run Code Online (Sandbox Code Playgroud)
但我不确定这会对分裂产生影响吗?
顺便说一下,我已经看过Stack Overflow上的其他浮点帖子了,我还没有找到关于如何划分两个浮点数的单一帖子.如果答案是在添加和分割时解决浮点问题的解决方案之间没有区别,那么请回答一下.
编辑:
我在评论中已经被问到我所指的哪些陷阱,所以我想我也会在这里为那些没有阅读评论的人添加快速说明:
当加0.1和0.2时,你会得到0.3,但是使用浮点运算得到0.30000000000000004(至少在JavaScript中).这只是常见陷阱的一个例子.
上面的问题在Stack Overflow上讨论了很多次,但我不知道分割时会发生什么,如果它与添加或乘法时发现的陷阱不同.可能没有风险,在这种情况下,这将是一个非常好的答案.
为什么toFixed()在以下情况下不能按预期工作?解决办法是什么?
代码:
var num = 5.56789;
var n = num.toFixed(16);
console.log(num)
console.log(n)Run Code Online (Sandbox Code Playgroud)
n 的期望值: 5.5678900000000000
n 的实际值: 5.5678900000000002
笔记:
var quantity = $(this).find('td:eq(2) input').val()*1;
var unitprice = $(this).find('td:eq(3) input').val()*1;
var totaltax = 0;
$(this).find('td:eq(4) input[name^=taxamount]').each(function(){
totaltax = (totaltax*1)+($(this).val()*1);
});
var subtotal = (unitprice+totaltax);
alert(subtotal+' is unit subtotal, to mulitply by '+quantity);
var total = subtotal*quantity;
$(this).find('td:last').html('$'+total);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,基于我的DOM,结果都是整数(特别是因为我确保我将*1修饰符应用于值以确保它们是数字,而不是字符串).
在这种情况下,这些是在上述代码的前7行内返回的值(并通过警报命令验证)数量:10 unitprice:29 totaltax:3.48 subtotal = 32.48
当我乘以总变量的小计*数量时,总回报:总计:324.79999999999995
所以最后,我得到了td:last满$ 324.79999999999995而不是$ 324.80这更正确.
奇怪,我知道.我在不同的点尝试了各种警报,以确保没有错误等.
可能重复:
JavaScript浮点数问题的优雅解决方法
我想知道如何将以下值转换为javascript中的百分比?
首次预期产出
Input Value : 0.03222772304422584
Expected Value: 0.03
Run Code Online (Sandbox Code Playgroud)
第二个预期产出
Input Value : 0.03222772304422584
Expected Value: .03
Run Code Online (Sandbox Code Playgroud)
提前致谢,
本Kathir