Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中从Double转换为String_Java_Android - Fatal编程技术网

Java 在Android中从Double转换为String

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) {

我正在尝试在Android活动中将值从Double转换为String。我可以在下面的第一个示例中实现这一点(在Eclipse没有扭曲错误的情况下工作)。然而,我很好奇为什么第二个例子不起作用

第一个例子

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。