java - Java Math.signum 不评估锻炼错误
问题描述
我想问一个关于Math.signum()
Java的问题。
作为 Java Dummies 系列教程的一部分,我编写了以下代码:
public class MathClass {
public static void main (String [] args) {
int a = 27;
int b = -32;
a = Math.abs(a) * Math.signum(b); // a is now -27
System.out.println(a);
}
}
我认为如果Math.signum(b)
返回一个 float 的 value -1.0F
,这意味着它a
也将被转换为一个 float,并且 a 被赋值为-27
。但是,当我运行此代码时,出现以下错误:
error: incompatible types: possible lossy conversion from float to int
a = Math.abs(a) * Math.signum(b); // a is now -27
我对这个错误感到困惑。
我犯了什么错误?
解决方案
你的错误是你调用了错误的signum()
方法。
使用Integer.signum(int i)
方法而不是Math.signum(float f)
方法。
哦,如果您使用 printa
而不是test
,代码实际上会编译并运行。
int a = 27;
int b = -32;
a = Math.abs(a) * Integer.signum(b);
System.out.println(a); // prints: -27
推荐阅读
- wordpress - 如何编辑 Woocommerce style.dev css 文件?
- c# - 使用 ml.net 和 TensorFlow 模型进行位图输入的标量而不是矢量类型
- javascript - 如何使用外部API为jitsi meet video room设置密码
- python - Python在numpy数组中拆分字符串
- mysql - 使用模数运算符在检查约束中出错
- azure - 在编写获取存储帐户密钥的命令时。会有两个密钥,如何在变量中存储一个值
- javascript - 使用 JavaScript 将海报图片替换为 Wordpress 特色图片
- mysql - Mysql:ALTER TABLE 不锁定表?
- perl - 使用 crontab 通过 perl 调用 Java 程序时不运行
- javascript - 是否可以向使用 ReactJS 制作的 Todo 应用程序添加编辑功能?