我对Android编程非常陌生,所以任何帮助都会非常感激。我已经浏览了这些页面并且似乎找不到合适的答案。如果这是一个类似的问题我老实说道歉。 我的问题是,当我使用AIDE编译器在我的Android设备上编写代码时,下面的示例将进行舍入
pitch_round.setScale(2,BigDecimal.ROUND_UP);
工作正常,我能够通过使用pitch_round.ToString()将圆形bigdecimal输出到TextView,当我在Eclipse中使用类似的代码时,编译时没有错误但是textview的输出似乎不是圆的根本没有错,现在似乎有更多的十进制字符。
下面是一段无效的代码片段。有什么我不在这里做的吗?所有的falues都是漂浮物 这与设备上AIDE上使用的代码相同 提前谢谢
pitch = mOrientation[1]*57.2957795f;
roll= mOrientation[2]*57.2957795f;
yaw= mOrientation[0]*57.2957795f;
// change to bigdecimal object
BigDecimal pitch_round = new BigDecimal(pitch-zero_pitch);
BigDecimal roll_round = new BigDecimal(roll-zero_roll);
BigDecimal yaw_round = new BigDecimal(yaw-zero_yaw);
pitch_round.setScale(2,BigDecimal.ROUND_UP);
roll_round.setScale(2,BigDecimal.ROUND_UP);
yaw_round.setScale(2,BigDecimal.ROUND_UP);
Log.i(SENSOR_SERVICE, pitch_round.toString());
t_pitch.setTextColor(Color.CYAN);
t_roll.setTextColor(Color.CYAN);
t_yaw.setTextColor(Color.CYAN);
// log some output to test code
//Log.i(SENSOR_SERVICE, "Send Results"+ pitch);
t_pitch.setText(pitch_round.toString());
t_roll.setText(roll_round.toString());
t_yaw.setText(yaw_round.toString());
答案 0 :(得分:4)
更改所有内容
pitch_round.setScale(2,BigDecimal.ROUND_UP);
到
pitch_round = pitch_round.setScale(2,BigDecimal.ROUND_UP);
BigDecimal
是不可变的,调用此方法不会导致原始对象被修改
答案 1 :(得分:1)
setScale返回一个你要丢弃的新BigDecimal。尝试
pitch_round = pitch_round.setScale(2,BigDecimal.ROUND_UP);
来自setScale API doc:
请注意,由于BigDecimal对象是不可变的,因此调用此方法 不要导致原始对象被修改,与之相反 通常使用名为setX mutate field X的方法。相反, setScale返回具有适当比例的对象;返回的对象 可能会或可能不会重新分配。