处理 float() 函数

Processing float() function

首先,this function是特殊处理还是默认存在于java?

当我在处理下面这行代码时,

println(float("88") + "\t" + float("88\n") + "\t" + float("88p") ); // p is just an arbitrary character other than '\n'

输出

88.0 88.0 NaN

那么,为什么 float() 函数对 '\n' 字符可以正常工作,但对 'p' 不起作用?他们不都是角色吗?我知道 '\n' 很特别,但在这种情况下它有什么不同吗?

编辑:我已经用 'p' 替换了 'K' 因为答案中有一些警告。

据推测,它将 \n 视为 "meaningless filler"(即可以安全地剥离)。

此外,在这种情况下,k 不是 只是一个任意字符。例如,88k 可以解释为 88,000(这并不是一种不常见的用法)。或者,也许这根本不是您的意思,k 只是一个拼写错误 - 无论哪种方式,框架都不知道,所以您实际上是在要求它在这里读懂您的想法。

再举一个例子,考虑float("12abf456x")这样的情况。框架应该用这个做什么?完全不清楚您如何合理地将其解释为任何确定的数字。

Processing 中存在特定的 float 函数

在 java 中有 Float.parseFloat(s: String): float。当传递无法识别为正确浮点数的字符串时,此函数应产生 NumberFormatExceptions。

\n 通常被视为空白或空格。字符串在解析之前通常会被修剪(也就是说,从所述字符串的开头和结尾删除空格和字符,如 \r 和 \n)。 K 字符未被删除,因此 float() 产生 NaN(在 Java 中你会得到一个 NumberFormatException)

只存在于加工中。如果您想在 Java 中使用类似的功能,可以使用 Float#parseFloat(String)

我假设它适用于 \n,因为那是一个换行符,它是空白。 float 可能会在解析值之前修剪空格。 K 不是空白字符也不是数字,因此无法解析为浮点数。