Java 传递和接受相同的类型,但仍然得到不兼容的类型:可能会从double转换为long
我已经阅读了关于同一主题的其他帖子,但似乎没有纠正我的错误。在我的主类中,我有一个声明为double的变量Java 传递和接受相同的类型,但仍然得到不兼容的类型:可能会从double转换为long,java,Java,我已经阅读了关于同一主题的其他帖子,但似乎没有纠正我的错误。在我的主类中,我有一个声明为double的变量 double R_b2 = 60000/r_b2; 我正在将此值传递给线程: Thread prodThread2 = new Thread(new Baker(cupcakes_sharedQueue, size,R_b2), "Cupcakes"); 在构造函数中,我声明如下 private final Vector prod_sharedQueue; private final
double R_b2 = 60000/r_b2;
我正在将此值传递给线程:
Thread prodThread2 = new Thread(new Baker(cupcakes_sharedQueue, size,R_b2), "Cupcakes");
在构造函数中,我声明如下
private final Vector prod_sharedQueue;
private final int SIZE;
private final double rate;
public Baker(Vector prod_sharedQueue, int size, double rate) {
this.prod_sharedQueue = prod_sharedQueue;
this.SIZE = size;
this.rate = rate;
}
我使用这个传递的值作为计时器来休眠线程
我得到以下错误:
java:36:错误:不兼容的类型:可能从double到long的有损转换
线程速率;
行中:
线程速率
怎么了?我尝试使用int,它工作时没有错误,只是没有得到所需的正确值。除此之外,我尝试了float、double和long,但都不起作用。Thread.sleep声明为long,而不是double。您需要手动强制转换它:
Thread.sleep((long) rate);
请注意,这将截断到下面最接近的毫秒。一个简单的强制转换,因为double使用更多的位来表示值
Thread.sleeplongrate因为double使用更多的位来表示一个值,double和long都是64位的值。Hooo,是的,我的错,我一直在考虑浮动。谢谢。天哪,我花了1个小时试图解决这个问题,你在一秒钟内救了我。非常感谢,它起作用了now@EbinPIssac没问题,我很乐意帮忙。