有人对javascript与大数字的比较有解决方案吗?
我一直在摆弄HTML和SVG。作为实践,我创建了一个页面,该页面使用javascript求解毕达哥拉斯定理,并在300hx300w区域显示三角形。我认为我的问题是,当变量“有人对javascript与大数字的比较有解决方案吗?,javascript,svg,comparison,Javascript,Svg,Comparison,我一直在摆弄HTML和SVG。作为实践,我创建了一个页面,该页面使用javascript求解毕达哥拉斯定理,并在300hx300w区域显示三角形。我认为我的问题是,当变量“a”和变量“b”之间的差异过大时,如果(a>b)”不能正常工作,则比较“”。因此,它对a=55和b=32甚至a=5555和b=5000都非常有效,但如果我这样做a=1001和b=55的话,它运行时似乎就好像b大于a一样 <h2>Pythagorean theorem</h2> <p>Ente
a
”和变量“b
”之间的差异过大时,如果(a>b)”不能正常工作,则比较“”。因此,它对a=55
和b=32
甚至a=5555
和b=5000
都非常有效,但如果我这样做a=1001
和b=55
的话,它运行时似乎就好像b
大于a
一样
<h2>Pythagorean theorem</h2>
<p>Enter Variable "a"<input id="vara" type="text"></p>
<p>Enter Variable "b"<input id="varb" type="text"></p>
<p><span id="a">a</span><sup>2</sup> +
<span id="b">b</span><sup>2</sup> =
<span id="c">c</span><sup>2</sup></p>
<script>
function pythagorean(){
var a=document.getElementById("vara").value;
var b=document.getElementById("varb").value;
var x=a * a + b * b;
var c=Math.sqrt(x);
if(a>b){
ay=0
bx=b/a*300
}
else{
ay=300-(a/b*300)
bx=300
}
document.getElementById("a").innerHTML=a;
document.getElementById("b").innerHTML=b;
document.getElementById("c").innerHTML=c;
document.getElementById('trianglepoints').setAttribute("points",bx+",300 0,300 0,"+ay);
}
</script>
<svg id="triangle xmlns="http://www.w3.org/2000/svg" version="1.1" height="300" width="300">
<polygon id="trianglepoints" points=""
style="fill:red;stroke:black;stroke-width:1;">
</svg>
<br />
<button type="button" onclick="pythagorean()">calculate</button>
毕达哥拉斯定理
输入变量“a”
输入变量“b”
a2+
b2=
c2
勾股函数(){
var a=document.getElementById(“vara”).value;
var b=document.getElementById(“varb”).value;
var x=a*a+b*b;
var c=数学sqrt(x);
如果(a>b){
ay=0
bx=b/a*300
}
否则{
ay=300-(a/b*300)
bx=300
}
document.getElementById(“a”).innerHTML=a;
document.getElementById(“b”).innerHTML=b;
document.getElementById(“c”).innerHTML=c;
document.getElementById('trianglepoints').setAttribute(“点”,bx+”,300 0300,“+ay);
}
确保将元素.value
返回的字符串值强制转换为数字:
否则,当您比较a>b
时,它将进行字符串比较,'1001'
小于'55'
(首先比较第一个字符)。在a
和b
中存储值时,可能更容易使用parseInt
或parseFloat
,这取决于所使用的上下文a
和b
,以及可接受的值。如果将10em
转换为10
,然后用作像素值,那么使用parseInt
,而不是选择使用isNaN
进行验证检查可能并不直观。最后,为工作选择合适的工具是很重要的。
a = document.getElementById('vara').value;
a = +a;
-or-
a = Number(a);