第一个可以回来-3,只是可能性很小。
返回带正号的双精度值,大于或等于 0.0 且小于 1.0。
因此,当您在内括号内有, 时(int) (Math.random()*12-3),结果将是一个 double,您可以将其转换为int。这会截断小数位,因此除非恰好Math.random() * 12返回0(然后减去 3 恰好得到 -3),, 将返回最低的,并且会被截断为 -2。Math.random() * 12 -32.{...}
当你这样做时:
(int) (Math.random()*12)-3
Run Code Online (Sandbox Code Playgroud)
转换的优先级高于减法,因此更有可能被截断为0。然后减去三,得到-3。