我试图在Processing中将一个数字除以另一个数字,并且我一直得到错误的答案。
Ext.create('Ext.window.Window', {
modal: true,
closeAction: 'destroy',
layout: {
type: 'vbox',
},
title:'Info',
html: '<h1>The message</h1> <p>Here some <b>text</b></p>',
listeners: {
close: function(panel, eOpts) {
Ext.getBody().removeCls('darkMask');
}
}
})
给了我
float a;
a = 3/2;
println(a);
然后回答应该是1.5。
尝试不同的号码,
1.0
给了我
float a;
a = 2/3;
println(a);
当答案应为0.666666 ....
我有什么遗失的东西吗?我查看了Processing documentation for division,似乎我使用了正确的语法。
答案 0 :(得分:1)
也许Processing正在将url
和3
解释为整数。并且,由于您将一个整数除以另一个整数,它将为您提供整数除法。
尝试将其中一项或两项改为2
和/或3.0
。
答案 1 :(得分:1)
您的除法被解释为整数除法,并且很可能遵循Java整数除法规则(自Processing seem to be based on Java)起。
Java从C继承了它的大部分划分规则,这些在特定问题/答案here中有更详细的解释。
答案 2 :(得分:1)
像其他人所说,你使用整数除法。
请注意,int
值不能包含小数位。因此,如果您进行的计算会产生小数位,那么这些值是截断,而您只剩下整数部分(换句话说,整数部分)。
int x = 1;
int y = 2;
int z = x/y; //0
int x = 5;
int y = 2;
int z = x/y; //2
您正在使用 int literal values (2
和3
之类的数字),而且那些不具有小数位,因此Processing会对它们进行处理比如int
值,他们遵守上述规则。
如果您关心小数位,请将它们存储在float
或double
变量中:
float x = 1;
float y = 2;
float z = x/y; //.5
float x = 5;
float y = 2;
float z = x/y; //2.5
或者只是通过添加小数部分来使用float
文字:
float a = 2.0/3.0;
现在处理知道这些是float
值,因此您将保留小数位。