Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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
如何在Android中打印两位小数的双精度字符?_Android_Format_Double_Show_Settext - Fatal编程技术网

如何在Android中打印两位小数的双精度字符?

如何在Android中打印两位小数的双精度字符?,android,format,double,show,settext,Android,Format,Double,Show,Settext,也许这是一个愚蠢的问题,但如果它没有创建方法,我猜不出如何解决它。也许有一种“自然的方式”可以做到这一点,比如在C语言中。问题是: 我有一个变量: double a; 我只想用2或3个小数来表示。当我试图展示它时: Text.setText("Value of a: " + String.valueOf(a)); 它给出了类似于: a值:5.234966145 我只想 a值:5.23 不改变a的实数,因此它显示近似数,但与实数一起使用。您可以使用a,或String.format(“%.2f”

也许这是一个愚蠢的问题,但如果它没有创建方法,我猜不出如何解决它。也许有一种“自然的方式”可以做到这一点,比如在C语言中。问题是:

我有一个变量:

double a;
我只想用2或3个小数来表示。当我试图展示它时:

Text.setText("Value of a: " + String.valueOf(a));
它给出了类似于:

a值:5.234966145

我只想

a值:5.23

不改变a的实数,因此它显示近似数,但与实数一起使用。

您可以使用a,或
String.format(“%.2f”,a)

使用此代码:

yourTextView.setText(String.format("Value of a: %.2f", a));
DecimalFormat form = new DecimalFormat("0.00");
etToll.setText(form.format(tvTotalAmount) );
注意:数据必须为十进制格式(tvTotalAmount)

…在欧洲语言环境中导致“NumberFormatException”错误,因为它将结果设置为逗号而不是小数点-当textView添加到editText中的数字时,会发生错误。
这两种解决方案在美国和英国的语言环境中都运行良好。

在使用DecimalFormat之前,您需要使用以下导入,否则代码将无法工作:

import java.text.DecimalFormat;
格式化的代码是:

DecimalFormat precision = new DecimalFormat("0.00"); 
// dblVariable is a number variable and not a String in this case
txtTextField.setText(precision.format(dblVariable));

对于最多显示两位小数的数字,有两种可能性- 1) 首先,如果有小数位数,您只想显示小数位数。 例如-i)12.10显示为12.1,ii)12.00显示为12。然后使用-

DecimalFormat formater = new DecimalFormat("#.##"); 
2) 其次,您希望显示十进制数字,而不考虑是否存在十进制数字,例如-i)12.10将显示为12.10。ii)12显示为12.00。然后使用-

DecimalFormat formater = new DecimalFormat("#.##"); 
DecimalFormat formater = new DecimalFormat("0.00"); 

您的代码显示四舍五入的值。例如,它通过调用precision.format(2.81666666)来显示2.82…这是所需的行为,不是吗?这将把“0”格式化为“.00”。相反,使用
new DecimalFormat(“0.00”)
将“0”显示为“0.00”doubleNumber.toString()。子字符串(0,3)会发出警告:“隐式使用默认区域设置是常见的错误源:使用String.format(locale,…)而不是”@AndreKR这是因为在不同的国家使用了变量符号。即使指定了正确的格式,如果以后解析它,也必须执行相同的操作。如果您不这样做,那根本没关系,因为它使用设备的系统设置,您无论如何都应该使用。
DecimalFormat formater = new DecimalFormat("0.00");