我只是好奇JavaScript中的数字是否可以达到Infinity
。
JavaScript编号的范围已经足够好- 2到64个不同数字的幂次,大约是 18 Quintilian(后跟18个零的18)。。好多啊。
现在,我在这里有几个问题:
Infinity
数字?Infinity
分配给变量?尝试编写方法incrementNumToInfinity()
来增加一定次数的值,以便a === b
可以评估为true
(还可以查看其他可能的情况,其中JavaScript引擎可以在运行时将值Infinity
分配给变量。
var a = 1000; // a positive number
var b = Infinity;
console.log(a === b); // It returns false, that's expected
function incrementNumToInfinity(num) {
// Logic to convert our variable num into Infinity
return num;
};
a = incrementNumToInfinity(a); // Input: 1000, Expected output: Infinity
console.log(a === b); // Should return true
答案 0 :(得分:2)
JavaScript中的数字能否在运行时达到Infinity?
在运行时可能会获得一个数字,该数字是计算结果,其值为Infinity
。 Nina Scholz有shown个这样的情况:如果您进行x = 1 / 0
,则x
的值为Infinity
。
当数字超过该范围(即超出JavaScript可以处理的范围)时,会发生什么? JavaScript是否会将其称为新的
Infinity
数字?
我们可以尝试一下。 Number.MAX_VALUE
是JavaScript可以表示的最大浮点数。如果运行此命令:
Number.MAX_VALUE + 1
您得到很大的数字,但没有Infinity
。那里发生了什么事?嗯,请直觉尝试一下:
Number.MAX_VALUE + 1 === Number.MAX_VALUE
结果为true
。说问题是浮点数的精度有限,当我在Number.MAX_VALUE
加1时没有足够的精度来注册增量。
如果您尝试这样做:
Number.MAX_VALUE * 2
然后您会得到Infinity
。
JavaScript中有哪些所有方案,可以在运行时将Infinity值分配给变量?
“所有方案” ...嗯...产生所有方案的枚举有多个问题。一方面,尚不清楚什么标准应该将一种情况彼此区分。 -Math.log(0)
与1 / 0
是否有不同的方案?如果是这样,为什么?还有一个问题是JavaScript引擎在实现数学函数方面有很大的余地。例如,Math.tan
在current draft中这样指定:
Math.tan(x)
返回
x
的切线的与实现有关的近似值。该参数以弧度表示。如果
x
为NaN
,则结果为NaN
。如果
x
为+0
,则结果为+0
。如果
x
为-0
,则结果为-0
。如果
x
是+∞
或-∞
,则结果是NaN
。
它不要求Math.tan(Math.PI / 2)
的值。如果您回忆起三角学类,pi / 2
为90度,并且在该角度处的切线为无限大。 v8的各种版本已返回Infinity
或非常大的正数。 (请参见this question。)该规范并不要求一个结果要高于另一个结果:实现可以自由选择。
因此,实际上,如果您从数学上知道应该产生Infinity
的一组情况开始,直到您尝试使用它们,他们才真正知道它们是否会产生incrementNumToInfinity
。
对我来说,使用let x = 0;
while (x !== Infinity) {
x++;
}
函数的问题部分尚不清楚。您似乎在问是否仅通过增加数字即可达到无穷大。这取决于你的意思。如果您是这个意思:
x
这将永远不会终止。 Number.MAX_SAFE_INTEGER + 1
永远不会超越Infinity
。因此它不会达到let x = Number.MAX_SAFE_INTEGER + 1;
x === x + 1;
。试试这个:
true
您将得到结果class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fetchJson()
}
fun fetchJson(){
println("attemting to fetch JSON")
val url = "https://ws.smn.gob.ar/map_items/weather"
val request = Request.Builder().url(url).build()
val client = OkHttpClient()
client.newCall(request).enqueue(object: Callback {
override fun onResponse(call: Call, response: Response) {
var body = response?.body()?.string()
println(body)
val gson = GsonBuilder().create()
val cities = gson.fromJson(body, Cities::class.java)
}
override fun onFailure(call: Call, e: IOException) {
println("Falied to comunicate")
}
})
}
}
。再次遇到精度问题。 增量1不足以使您获得的精度有所不同。
将增量更改为2、5、10或10000000并不能真正解决问题,它只是更改了增量之前您可以走多远。
答案 1 :(得分:1)
JavaScript中的数字能否在运行时达到Infinity?
假设您的程序没有内存泄漏。我相信它可以达到无限远。
console.log(Number.MAX_SAFE_INTEGER)
// 9007199254740991
console.log(Number.MAX_VALUE)
// 1.7976931348623157e+308
var i = Number.MAX_SAFE_INTEGER
while (i != Infinity) {
i += Math.pow(10, 307)
console.log(i)
}
// 1.0000000000000005e+307
// 2.000000000000001e+307
// 3.0000000000000013e+307
// 4.000000000000002e+307
// 5.000000000000002e+307
// 6.000000000000003e+307
// 7.000000000000003e+307
// 8.000000000000004e+307
// 9.000000000000004e+307
// 1.0000000000000004e+308
// 1.1000000000000004e+308
// 1.2000000000000003e+308
// 1.3000000000000003e+308
// 1.4000000000000003e+308
// 1.5000000000000002e+308
// 1.6000000000000002e+308
// 1.7000000000000001e+308
// Infinity
答案 2 :(得分:0)
平方的平方根与乘以相同平方的PI的乘积减去PI的比率,即当它接近无穷大时等于无穷大,等于无穷大。或同时证明阿基米德是对的。 PI和正方形是等价的,因为它们都不会达到0。这种现象也解释了勾股定理中的零边界,其中A平方+ B平方= c平方接近无穷大。
Math.sqrt(1)/(Math.PI *((Math.sqrt(1)))-Math.PI)
这是狐狸和鸭子之谜的结果。当鸭子移动到池塘的距离为1r时,狐狸移动180度或它的相对角和相邻角的平方的总和,我们得到平方2 ^ 2(距池塘中心的行进距离)平方根PI与给定的1:4比率,因此三角形在pi-pi = Infinity或与任意矢量在任何特定点处为1:1的关系的低通量。
答案 3 :(得分:-1)
广告2:
JavaScript中有哪些所有方案,其中可以在运行时将值
Infinity
分配给变量?
您可以除以零。
var x = 1 / 0;
console.log(x);