我必须比较两个数字.其中一个来自custt python代码,另一个来自numpy.调试器显示它们具有相同的值'29 .0',但是第一个的float类型和第二个的类型是float64,所以a == b并且a - b == 0是False.我怎么处理它?有没有办法强制常规python变量默认float64使用或numpy使用float?
更新:最后所有这些值来自29.0写入的同一文件,因此我认为数值不存在差异.
我遇到了以下程序
class Boolean {
public static void main(String argv[]) {
boolean x;
x = 4.4f == 4.4;
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
以下程序的输出是 false
但是,如果我们以下列方式编写程序,那么
class Boolean {
public static void main(String argv[]) {
boolean x;
x = 4.5f == 4.5;
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下输出是 true
有人可以解释一下为什么吗?
我在网上搜遍了所有的答案,但所有答案都只是差异所在.我知道不同之处,但我不明白他们的应用程序的差异.
例如,假设我们必须采用两个浮点值,如果我们使用double,我们可以很容易地比较使用a==b,而如果我们使用Double,我们将不得不使用a.equals(b).
在我的grails项目中,我将所有计算都移到java类中.
主要目的是将当前时间格式化为字符串(两种语言).例子:
1 day 2 hours 3 seconds
1 ???? 2 ???? 3 ???????
Run Code Online (Sandbox Code Playgroud)
但我有一个方法:
private static boolean endsWith(final long num, final long part) {
if (num / 10 < 1) {
return num == part;
} else {
float val1 = (num - part) / 10;
float val2 = (float) Math.floor(val1);
return val1 == val2;
}
}
Run Code Online (Sandbox Code Playgroud)
它检查'num'是否以'part'结尾.例子:
assert endsWith(128, 1) == false
assert endsWith(1, 1) == true
assert endsWith(34, 4) == true
Run Code Online (Sandbox Code Playgroud)
PS num - …
我有一个包含具有 4 个参数(x、y、iD 和 myType)的对象的 ArrayList。我想验证此 ArrayList 中是否存在具有特定坐标的对象,独立于它们的 iD 和 myType 参数。我想使用Arrays.asList(yourArray).contains(yourValue)但它是当对象只有一个参数时。
这是整个代码:
public class MyObject {
public float x;
public float y;
public int iD;
public String myType;
public MyObject (float x, float y, int iD, String myType)
{
this.myType = myType;
this.iD = iD;
this.x = x;
this.y = y;
}
@Override
public String toString() {
return ("[iD="+iD+" x="+x+" y="+y +" type="+myType+"]");
}
}
ArrayList<MyObject> myArrayList = new ArrayList<MyObject>();
void setup()
{
size(100, 60);
myArrayList.add(new MyObject(3.5, …Run Code Online (Sandbox Code Playgroud) 诺布在这里想要计算iPhone的复利.
float principal;
float rate;
int compoundPerYear;
int years;
float amount;
Run Code Online (Sandbox Code Playgroud)
公式应为:amount = principal*(1 + rate/compoundPerYear)^(rate*years)
我得到的答案略有错误:
amount = principal*pow((1+(rate/compoundPerYear)), (compoundPerYear*years));
Run Code Online (Sandbox Code Playgroud)
我正在以.1的速率测试它,但调试器报告.100000001.
我做错了吗?我应该使用双打还是特殊课程(例如,NSNumber)?
感谢您的任何其他想法!
经过进一步的研究,似乎NSDecimalNumber类可能正是我所需要的.现在我只需要弄清楚如何使用这个坏男孩.
我遇到了这个代码的问题!我试图在java中运行代码,但答案似乎很奇怪.
float a=0.1F;
float b=0.2F;
if((a+b)==0.3){
System.out.println("True");
}
else{
System.out.println("False");
}
Run Code Online (Sandbox Code Playgroud)
答案是:错误但理论上应该返回True.如果我们使用a和b的值,如0.15和0.15或0.05和0.25,则函数返回True.我很迷惑.我读过像Java/JavaScript这样的语言实现IEEE-754数字格式的地方!如果是这样,那么这种格式是什么以及代码有什么问题?反正有没有改变数字格式?
如果我编写测试代码来测试我的代码,那么测试代码可能有错误,因此需要进行测试,当我的代码更改时,我的测试代码可能需要更改.无限重复广告.
这个问题是如何解决的(在实践中和理论上)?
我正在使用Windows 7上的Eclipse中的粒子引擎,我遇到了一个我从未见过的问题.我的代码中有这个:
float start = startPosition.getY();
p.position.addTo(p.moveVector);
float end = startPosition.getY();
if(start != end){
System.out.println("hit");
}
Run Code Online (Sandbox Code Playgroud)
它经常打印.我这样做的原因是因为startPosition正在改变,它搞砸了我的程序.
我也进入调试器并查看打印机命中时的值,我得到了这个结果,所有变量都在位置和moveVector:1.0E-5我不知道该怎么做.
这是我的代码.
粒子发射器http://tinyurl.com/9ahwodx
矢量3f http://tinyurl.com/9do6v2k
有问题的代码位于ParticleEmitter的底部.
如果你想看到或知道别的什么让我知道,但我认为这是所有相关的信息.
function ArithGeo(arr) {
var diff = arr[1]-arr[0];
var ratio = arr[1]/arr[0];
var allRatioAreGood = true;
var allDiffAreGood = true;
for(var i = 2;i<arr.length;i++){
// console.log(arr[i]-arr[i-1] == diff);
allRatioAreGood &= (arr[i]/arr[i-1] == ratio);
allDiffAreGood &= (arr[i]-arr[i-1] == diff);
}
// code goes here
if (allRatioAreGood){
return "Geometric"
}else if (allDiffAreGood){
return "Arithmetic";
}else {
return -1
}
}
console.log(ArithGeo([2, 4, 6, 7 , 8 ,10]));
Run Code Online (Sandbox Code Playgroud)
当我们在for循环中使用它时,'&='是什么意思?它是如何工作的?有人可以解释一下吗?
另外,这两条线是如何工作的?
allRatioAreGood &= (arr[i]/arr[i-1] == ratio);
allDiffAreGood &= (arr[i]-arr[i-1] == diff);
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下吗?