2011-04-30 182 views
-1

我有这样的辩论,6÷2(1 + 2)的答案是9或1答案是:6÷2(1 + 2)=?

public class bodmas 
{ 
public static void main(String [] args) 
{ 
    float i = 6/2*(1+2); 
    System.out.println(i); 
} 

} 

的Java返回9,但那是因为我不能删除*符号。如果我把这个在我的卡西欧FX-82MS计算器返回9,如果我插入6/2 *(1 + 2),但1,如果我插入6/2(1 + 2)

这让我担心作为一名Java开发人员,因为如果答案真的不同,我们有一个问题。我已经尝试过不同版本的计算器,答案给出了9,然而在我的计算器中它给出了1。所以可能没有什么可担心的。

作为结论,这个问题是不明确的,在编程方面它将返回9.如果必须返回1,则更清晰的问题将是6 /(2 *(1 + 2))。

+11

不要告诉我你在问这个Facebook问题... ** facepalm *** – Mehrdad 2011-04-30 19:03:00

+2

我要去1,但我有一个经济学所以我应该被认为是不可靠的来源。 – DaveH 2011-04-30 19:03:24

+1

[Google说9](http://www.google.ca/search?q=6%2F2%281%2B2%29) – 2011-04-30 19:04:02

回答

4

这取决于你如何定义你的表现。在Java(事实上,在大多数语言):

6/2 * (1+2) 

相当于

(6/2) * (1+2) 

这是9

你的计算器将其解释为:

6/(2 * (1+2)) 

这确实是1.

+0

6/2 = 3.1 + 2 = 3.这就是9来自哪里。 – jwismar 2011-04-30 19:05:59

+1

@jwismar:的确如此!我有一个金发的时刻...... – 2011-04-30 19:07:03

+0

@Oli正是这样,这让我很担心,因为作为程序员,你不能在Java中使用6/2(1 + 2),但是你必须使用6/2 *(1+ 2)给出不同的答案 – 2011-04-30 19:07:54

8

根据Order of Operations答案应该是9

+0

这个例子在那里提到! – abcd 2011-04-30 20:07:40

+0

首先对括号进行评估,然后如果一个表达式包含多个具有相同优先级(乘法,除法)的运算符,则运算符在数学和许多编程语言中都按照从左到右的顺序执行。 6/2 * 3 – apprich 2011-04-30 20:10:33

0

omg guys。 问问自己:什么是 a÷a =?它是一个。 现在想想内存法:a = 1a = 1(a) 现在问什么是 a÷1a =?显然1! a÷1a!= a÷1 * a 什么是÷2a? Ans:1/2 什么是6÷2a?答案:3/a 让a = 1 + 2在上述全部中。 停止转换像2a = 2 * a这样的东西。它是2a =(2 * a)

相关问题