Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 传递和接受相同的类型,但仍然得到不兼容的类型:可能会从double转换为long_Java - Fatal编程技术网

Java 传递和接受相同的类型,但仍然得到不兼容的类型:可能会从double转换为long

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的变量

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没问题,我很乐意帮忙。