分部操作给我错误的结果

时间:2016-02-03 21:05:50

标签: math processing division

我试图在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,似乎我使用了正确的语法。

3 个答案:

答案 0 :(得分:1)

也许Processing正在将url3解释为整数。并且,由于您将一个整数除以另一个整数,它将为您提供整数除法。

尝试将其中一项或两项改为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 23之类的数字),而且那些不具有小数位,因此Processing会对它们进行处理比如int值,他们遵守上述规则。

如果您关心小数位,请将它们存储在floatdouble变量中:

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值,因此您将保留小数位。