rndmBid=rand() % (sellPtr->sellPrice + (1.25*sellPtr->startPrice));
这条线有什么问题吗?除了1.25
(显然)之外,一切都是整数,编译器会给出一个错误invalid operands of types 'int' and 'double' to binary 'operator%'.
我尝试将startPrice
和rndmBid
更改为加倍,但没有运气。有什么建议吗?
答案 0 :(得分:4)
将double
引入算术表达式后,所有内容都会被提升/转换为double。所以你需要转换回整数:
rndmBid = rand() % static_cast<int>( ... );
(我相信你会意识到你的随机数不会均匀分布。)
答案 1 :(得分:2)
rhs返回一个double,而%
仅适用于整数。将结果转换为整数:
rand() % static_cast<int>(sellPtr->sellPrice + (1.25 * sellPtr->startPrice));
答案 2 :(得分:2)
(sellPtr->sellPrice + (1.25*sellPtr->startPrice)
是双倍的,因为(1.25*sellPtr->startPrice)
的结果是双倍的,因为1.25
是双倍的。将结果转换为int,它将编译:
rndmBid=rand() % static_cast<int>(sellPtr->sellPrice + (1.25*sellPtr->startPrice));
答案 3 :(得分:0)
您正在为double添加一个int,因此结果为double,不能与%
运算符一起使用。
要解决此问题,您需要执行以下操作:
rndmBid=rand() % ((int)(sellPtr->sellPrice + (1.25*sellPtr->startPrice)));
只要double不大于整数值,就可以正常工作。