Java 在Android中从Double转换为String
我正在尝试在Android活动中将值从Double转换为String。我可以在下面的第一个示例中实现这一点(在Eclipse没有扭曲错误的情况下工作)。然而,我很好奇为什么第二个例子不起作用 第一个例子Java 在Android中从Double转换为String,java,android,Java,Android,我正在尝试在Android活动中将值从Double转换为String。我可以在下面的第一个示例中实现这一点(在Eclipse没有扭曲错误的情况下工作)。然而,我很好奇为什么第二个例子不起作用 第一个例子 balance = (TextView) findViewById(R.id.textViewCardBalance); Intent intent = getIntent(); if (intent.getExtras() != null) {
balance = (TextView) findViewById(R.id.textViewCardBalance);
Intent intent = getIntent();
if (intent.getExtras() != null) {
balance.setText(String.valueOf((long)intent.getDoubleExtra("balance", 0.00)));
}
下面的第二个示例不起作用(错误:“无法从双精度转换为长精度”
有谁知道我如何才能让第二个示例工作,因为我需要记录从intent检索到的值,然后再将其传递给TextView
谢谢
就你而言:
String yourDoubleString = String.valueOf(intent.getDoubleExtra("balance", 0.00));
就你而言:
String yourDoubleString = String.valueOf(intent.getDoubleExtra("balance", 0.00));
使用字符串v=“”+String.valueOf((长)cardBalance)不起作用?使用字符串v=“”+String.valueOf((长)cardBalance)不起作用?为什么不能这样做
balance.setText(cardBalance + "");
你为什么不能这样做
balance.setText(cardBalance + "");
您试图从
Double
对象强制转换为long
原语,这没有什么意义……如果使用Double
,加上小写的“d”,会发生什么情况?好的,那么我应该使用什么?从intent返回的值包含小数,我读到使用Double表示小数是最实用的。双精度有小数点,长精度没有,所以实际上不能将Double表示为long。在这种情况下,当你做货币操作时,肯定是这样。好的,我如何将值从Double转换为String,Textview.SetText接受strings正如我所说的,如果将double
与小写的“d”一起使用会发生什么?您试图将double
对象转换为long
原语,这没有真正意义……如果使用double
与小写的“d”一起使用会发生什么?好的,那么我应该使用什么?从intent返回的值包含小数,我读到使用Double表示小数是最实用的。双精度有小数点,长精度没有,所以实际上不能将Double表示为long。在这种情况下,当你做货币操作时,肯定是这样。好的,我如何将值从Double转换为String,Textview.SetText接受strings正如我所说,如果将double
与小写的“d”一起使用,会发生什么情况?不能将双精度转换为长精度。@feldoh技术上可以,只是不能隐式转换。@user3580294但长格式中没有小数部分,这不是隐式转换,而是显式转换。我知道它的位数相同,所以如果需要,可以将位“打包”为长格式,但为什么呢?我可以假设mul特别是在这种情况下,因为它是货币性的*100就足以捕捉所有的小数,这样你就可以截断它。番石榴当然有函数将double四舍五入到long:long DoubleMath.roundToLong(double x,RoundingMode)
但考虑到这是针对银行余额的,舍入肯定不是正确的答案。@feldoh我只是说你可以将double
转换为long
@user3580294公平,即使你不能将double转换为long,它也会失去精度。@feldoh你在技术上可以,但不是隐式的。@user3580294但你没有小数部分在long中,这不是一个隐式转换,而是一个显式转换。我知道它的位数是相同的,所以如果你愿意,可以将这些位数组合成long,但是为什么呢?我可以假设你可以乘起来,尤其是在这种情况下;因为它是货币*100足以捕捉所有小数,然后你就可以截断它。番石榴当然有将double四舍五入为long的函数:long DoubleMath.roundToLong(双x,RoundingMode)
但考虑到这是针对银行余额的,舍入肯定不是正确答案。@feldoh我只是说你可以将double
转换为long
@user3580294 fair enoughhmm,这也很有意思?通过添加空字符串实现了什么?它通过连接cardBala中的值来创建一个新的字符串对象nce和空字符串。@Val Okafor如果这有效,我会接受它,这是很多人使用的一种技术,简单而干净。它确实有效,但对我来说就像是一种代码气味。我会坚持使用String.valueOf()就我个人而言。这个答案不是Java喜欢的工作方式,您滥用了为方便起见包含的隐式强制转换。它感觉更像Javascriptesque.Hmmm,这也很有趣?通过添加空字符串实现了什么?它通过连接cardBalance中的值和空字符串来创建一个新的字符串对象。@Val Okafor如果rked我会接受它,这是很多人使用的一种技术,简单明了。它确实有效,但对我来说就像是一种代码味道。我个人会坚持使用String.valueOf()。这个答案不是Java喜欢的工作方式,你滥用了一个隐式转换,这是为了方便。它感觉更像Javascriptesque。