很抱歉,如果以前有人问过这个问题,但我非常不确定如何制定我的搜索以获得任何相关结果。
基本上,我有一个类“Wheel”,在该类中,我声明==操作符应该如何工作:
bool operator == (Wheel& anotherWheel){
//Circumference of a wheel, times its RPM should give its speed
//The speed will be in what ever unit the radius is, per minute
double ourSpeed = 2 * PI * radius * rpm;
double anotherSpeed = 2 * PI * anotherWheel.getRadius() * anotherWheel.getRpm();
cout << ourSpeed << " vs " << anotherSpeed << endl;
if (ourSpeed == anotherSpeed){
return true;
}
return false;
除非车轮的半径和转速与其他车轮相同,否则此操作有效,除非已切换。因此,换句话说,对于以下情况,它不会返回true:
2*PI*3*10 vs 2*PI*10*3
即使我把它打印出来,并且它们在控制台中是完全一样的(除非我的基本数学知识完全不正常)。
我在计算速度时添加了一个偏执,从而解决了这个问题:
double ourSpeed = 2 * PI * (radius * rpm);
double anotherSpeed = 2 * PI * (anotherWheel.getRadius() * anotherWheel.getRpm());
但我想理解为什么会发生这种情况,π只是我声明的一个常数,所以这不重要。
谢谢
使用浮点数时要小心。
根据您添加浮点数的顺序,一组浮点数的添加可能会有所不同。乘法和其他各种运算也是如此。
这是因为精度限制导致的舍入。
e、 g.1/3 1/3=2/3
然而
0.33333334 0.33333334=0.6666668而不是0.6666667,这是2/3的理想值。
您将需要使用一个公差级别,以确定该值是否足够接近,被认为是相等的。
一个非常基本(幼稚且不灵活)的选择是:
if(fabs(a - b) < 0.001)
但是有更好的方法。
如果你真的想理解浮点数,从这里开始:Oracle浮点数-它会告诉你你需要知道的一切,还有更多。
我想用Java做一个程序来比较两个三角形。比较角度的顺序无关紧要,我知道我可以用语句来做,但有没有其他更有效的方法来比较3个角度和另外3个角度,因为三角形旋转并不重要,因为完全相同?(Java语言)
我一直在试图理解是否有可能使用类似于我在下面演示的if语句。我的理解是不是? 有了这段代码,我只得到数字
问题内容: 我有一个学校的作业,任务之一是解释很多小的计算,并解释为什么Java给您输出它给您的输出。 计算之一是: 1 +‘2’+ 3 这对我来说是一个词汇错误,因为老师在我的系统上使用了错误的“撇号”,但是我与其他同学交谈,他们告诉我他们得到了实际的输出,因此我开始阅读并发现了认为它应该表示一个char变量,并且我也了解 了系统的特定类型,所以我更改了符号以使其适用于我的系统,现在我得到了答案
测试变量的常用方法是检查它是否引用singletone: 根据PEP-8,建议将此方法作为检查的唯一方法: 与None之类的单例进行比较时,应始终使用is或is,永远不要使用相等运算符。 虽然有时我发现以下测试在不同的来源: 这种方式看起来不错,但是我不太明白为什么简单易读的结构可以被所取代。它在某些情况下更有用,还是指代码风格? UPD:使用我发现非常有用(到目前为止):
有没有更简洁的方法来做到这一点? 编辑:我的问题确实是重复的。对于任何阅读这篇文章的人,我建议再看看其他的线程--它们有一些好的东西。
在Spark dataframe列中获取最大值的最佳方法 这篇文章展示了如何在表上运行聚合(distinct、min、max),如下所示: null