我一直在使用@Override
protected String doInBackground(String... params) {
StringBuilder result = new StringBuilder();
cursorImage = db.rawQuery("select * from FieldTestDataFinal Where isSend ='N'", null);
for (cursorImage.moveToFirst(); !cursorImage.isAfterLast(); cursorImage.moveToNext()) {
result.append(sendRequest(cursorImage));
}
return result.toString();
}
private String sendRequest(Cursor cursorImage){
String responseDump = "";
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//set soap version
envelope.dotNet = true;
SoapObject request = new SoapObject(namespacegetlistdata, method_name__image);
request.addProperty("fileByte1", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE1")));//add the parameters
request.addProperty("fileName1", cursorImage.getString(cursorImage.getColumnIndex("fileName1")));//add the parameters
request.addProperty("fileByte2", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE2")));//add the parameters
request.addProperty("fileName2", cursorImage.getString(cursorImage.getColumnIndex("fileName2")));//add the parameters
request.addProperty("fileByte3", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE3")));//add the parameters
request.addProperty("fileName3", cursorImage.getString(cursorImage.getColumnIndex("fileName3")));//add the parameters
request.addProperty("fileByte4", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE4")));//add the parameters
request.addProperty("fileName4", cursorImage.getString(cursorImage.getColumnIndex("fileName4")));//add the parameters
request.addProperty("fileByte5", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE5")));//add the parameters
request.addProperty("fileName5", cursorImage.getString(cursorImage.getColumnIndex("fileName5")));//add the parameters
request.addProperty("fileByte6", cursorImage.getString(cursorImage.getColumnIndex("SIGNATURE_CONSUMER")));//add the parameters
request.addProperty("fileName6", cursorImage.getString(cursorImage.getColumnIndex("fileName6")));//add the parameters
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(url_getlistdata);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(soap_action_uploadImage, envelope);
responseDump = transport.responseDump;
} catch (Exception e) {
e.printStackTrace();
Log.d("myError -", String.valueOf(e));
}
return responseDump;
}
价格,但我想知道向用户展示此内容的最佳方式是什么。
BigDecimal
是一个好方法吗?答案 0 :(得分:1)
我建议向用户显示setScale(2,BigDecimal.ROUND_HALF_UP).toPlainString()。
答案 1 :(得分:0)
使用doubleValue()是一个好方法吗?
如果您想避免使用double
(或者您想控制数字的格式化方式),则使用BigDecimal是有意义的。如果你混合BigDecimal
和double
,我看不出重点。您也可以一直使用double
并简化代码。
如果要将值转换为字符串,请使用toString
例如
BigDecimal bd = ...
System.out.println("bd: " + bd.toString());
或只是
System.out.println("bd: " + bd);
如果您想使用double
,可以
double d =
System.out.printf("%.2f%n", d); // round to 2 decimal places
BigDecimal可能更容易出错的一个例子。这两个答案都是错误的,但在BigDecimal
的情况下,它不是很明显,无论是在代码中还是结果看起来都不错
System.out.println(BigDecimal.valueOf(1.00)
.divide(BigDecimal.valueOf(49), 2, BigDecimal.ROUND_HALF_UP)
.multiply(BigDecimal.valueOf(49)));
System.out.println(1.00 / 49 * 49);
打印
0.98
0.9999999999999999
你可以修复这两个代码,但第一种情况下存在问题的事实很容易被遗漏。提示:使用BigDecimal.valueOf
不是问题。代码越详细(使用的符号越多),就越难看到重要的细节。