我有以下内容:
int R=25;
double pi=3.14;
double r=R*sqrt(rand());
cout<<"r: "<<r<<endl;
double th=2*pi*rand();
cout<<"th: "<<theta<<endl;
我想转换:r = 1.98,th = 5.08。我还希望double result = r * th与2个zecimals。
我打印double result =r*th
时;这个数字非常庞大,不太现实。
如何将r
和th
值更改为1.98
和5.08
?怎么解决这个问题?
我需要在“。”之后将每个双精度值改为2位小数。
我在ubuntu下使用c ++工作。
感谢
答案 0 :(得分:2)
要在您指定的范围内生成随机值,请尝试以下操作:
r = (R*(rand()/(RAND_MAX + 1.0)));
th = (2*3.14*(rand()/(RAND_MAX + 1.0)));
表达式rand()/(RAND_MAX+1.0)
生成[0,1.0)
范围内的值。乘以范围限制可以得到您想要的数字。
注意:这不会将数字限制为两位小数,这更像是打印方式的函数。要打印两个小数位,请尝试:
std::cout << std::fixed << std::setprecision(2) << r << "\n";
std::cout << std::fixed << std::setprecision(2) << th << "\n";
std::cout << std::fixed << std::setprecision(2) << (r*th) << "\n";
答案 1 :(得分:0)
如果您需要将两个数字减小相同的数量,那么您可以简单地将它们分成相同的数字。无论如何,你将失去大致相同的精度。
如果你真的想通过砍掉指数来彻底改变结果,那么你可能会挖掘双数字格式本身并将尾数分开。
为什么你这样做对我来说是一个谜。