problem语句指定返回值的类型必须是原样。
我得到了错误“参数”:从'double'到'int'的转换,double temp = valueGeneration(min * sc,max * sc)行上的数据可能丢失;
我知道这是因为double值被int值作为参数接收。但是有没有一种方法可以绕过它,并且在代码中没有警告?
不允许我将返回类型和参数类型更改为double。
int valueGeneration(int min, int max) {
int range = max - min + 1;
int num = rand() % range + min;
return num;
}
double doubleValueGeneration(double min, double max){
double sc = 10;
double temp = valueGeneration(min * sc, max * sc);
double num = temp / sc;
return num;
1条答案
按热度按时间nwlqm0z11#
由于缺乏上下文,我看不出这段代码背后的原因,但
lround
应该是实现您想要的目标的更清晰的解决方案,而不是static_cast
。(参见:https://en.cppreference.com/w/cpp/numeric/math/round)让我们注意到
sizeof(int) <= sizeof(long)
,因此根据您的操作系统/编译器,这也可能导致(不同的)警告,在这种情况下只是static_cast<int>
。