输出编号,小数点后无数字



ANDROID STUDIO帮助,VB.NET代码是示例-(已解决!)

我来自VB.NET(2年以上)。

需要帮助输出Double变量,小数点后没有数字。

我知道整数是指小数点后没有任何数字的数字。

在Visual Basic或VB.NET中,我可以通过执行以下操作来完成此操作。。

 Dim Variable_Name_A as Decimal = 12.0123990110001
 Variable_To_Hold_It = Decimal.Truncate(Variable_Name_A)
 Outputs : 12

Val将String或TextBox视为Double。

那么,我们如何在Java或Android Studio中做到这一点呢?

另外,如果你只回答一个问题。你如何摆脱Android Studio中的负面符号。。在VB.NET中,我可以键入以下代码来消除它。

 Dim My_Variable_Name_A as Double = -12.00017
 My_Variable_Name_B = Math.Abs(My_Variable_Name_A)
 Outputs : 12.00017

所以,我看了一下Android Studio的"格式化程序"。我读过无数关于小数点后数字的帖子。我一点也不懂。

我不想四舍五入。

在VB.NET中,如果我想"格式化"一个数字,我们通常会这样做。。

Dim Variable_Name_A as Double = 13.00192012334
Variable_Name_B = format(Variable_Name_A, "0.000")
Output : 13.002

我只需要整个数字,在安卓工作室的小数点之前,我不想要小数点之后的数字。

此外。。如果可以的话。。不取整。。你能告诉我如何格式化这个号码吗。是的,小数点后有X位数。

你能帮我回答第一个问题吗?如果可以的话,帮我回答其他问题。

*所以我想明白了*

EditText Millimeters_VARa = (EditText) findViewById(R.id.Millimeters_EditText_ID);
Double MM_Double = Double.parseDouble(Millimeters_VARa.getText().toString());
EditText Inches_VARa = (EditText) findViewById(R.id.Inches_EditText_ID);
DecimalFormat WholeNumber = new DecimalFormat("0");
DecimalFormat WholeAndThousandths = new DecimalFormat("0.000");
// Converts Millimeters to Inches.
Double MM_to_Inches_Convert = (MM_Double / 25.4);
Inches_VAR.setText(WholeNumber.format(MM_to_Inches_Convert));
Output Example : 2
Inches_VAR.setText(WholeAndThousandths.format(MM_to_Inches_Convert));
Output Example : 2.000

因此,它似乎只有在最终输出值时才有效。

如何将格式化的数字或值存储在双变量中?

啊。。我想明白了。像这样?

*将格式化的数字或值存储为双精度*

Double TheWholeNumber = Double.parseDouble(WholeNumber.format(MM_to_Inches_Convert.toString()));

不!!不起作用。。应用程序崩溃。。只是保持简单,并在最后用setText输出时格式化数字。

但它当然是四舍五入到最后一位。所以,现在我要学习如何解决这个问题。

防止舍入-已解决

public void FormatFunction(View v){
EditText EditText_VAR = (EditText) findViewById(R.id.EditText_A);
Double EditText_Double =     Double.parseDouble(EditText_VAR.getText().toString());
TextView TextView_VAR = (TextView) findViewById(R.id.TextView_A);
DecimalFormat LOL = new DecimalFormat("0.0000");
LOL.setRoundingMode(RoundingMode.DOWN);
TextView_VAR.setText(LOL.format(EditText_Double));

Voilà

你就是这么做的。我现在也明白了使用磅符号"#"和只使用零之间的区别。英镑符号防止尾随零。

类名FormatFuncion是通过单击按钮调用的。

<TextView
android:textSize="22sp"
android:id="@+id/TextView_A"
android:text="@string/OUTPUT_STRING"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"/>
<EditText
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_marginTop="90dp"
android:id="@+id/EditText_A"
android:inputType="numberDecimal"/>
<Button
android:layout_width="150dp"
android:layout_height="60dp"
android:layout_below="@+id/EditText_A"
android:layout_marginTop="20dp"
android:text="@string/Format_String_A"
android:onClick="FormatFunction"/>
</RelativeLayout>

你可以清楚地看到。

这篇文章应该可以帮助任何寻找数字格式答案的人,以及如何防止四舍五入。解决。

安卓编程有点困难。与使用Visual Studio 2010在VB.NET中编程相比,它需要更长的时间。适用于Windows操作系统的应用程序。我可以,哈哈,更正。。"我已经"在VB.NET中制作了几次应用程序,它肯定比安卓编程要好得多。就为我700多美元(安卓系统)的三星Galaxy Note 4制作应用程序所需的时间而言。我只是讨厌。。排序。。键入我的布局。这很耗时。此外,为了让事情正确排列,比如在另一个按钮下面、右边、左边等处制作按钮。如果你有多个其他对象,必须说An Example : android:layout_toRightOf="@+id/EditText_A" 之类的东西

只是一种痛苦,IMHO。但我喜欢Android的编码。不管它是否需要一些学习和挠头。到目前为止,只比VB.NET慢得多。

1)将Double转换为String。

2) 执行字符串拆分
3) 将两个分开的部分重新连接成字符串
4) 将字符串解析为长5) 瓦拉双精度无小数

double dbNum=11112.1111;
    String []dbStore=Double.toString(dbNum).split(".");
    String strDBNum="";
    for(String str:dbStore)
    {
        strDBNum+=str;
    }
    Long lDbNum=Long.parseLong(strDBNum);

试试这个

double number = 1205.6358;
System.out.println("number : " + number);
DecimalFormat df = new DecimalFormat("###");
System.out.println("number (DecimalFormat) : " + df.format(number));

Java有一个漂亮的小特性,叫做强制转换。通过在前面粘贴(int)将Double转换为int

Double Variable_Name_A = 12.0123990110001;
System.out.println((int)Variable_Name_A);

本质上发生的是Variable_Name_A被转换为int,从而删除小数后的所有内容。您也可以将Variable_Name_A保留为具有以下内容的双精度:

Double Variable_Name_A = 12.0123990110001;
Double Variable_Name_A = (int)12.0123990110001;
System.out.println(Variable_Name_A);

1)有几种方法可以做到这一点。您可以使用DecimalFormat(在此处找到文档),也可以使用Cast(在此处发现文档)。

强制转换是告诉你的程序你希望它将一种数据类型视为另一种。在您的情况下,您希望double被视为int,它将删除小数点以外的任何内容。

double My_Variable_Name_A = -12.9345;
int casted = (int) My_Variable_Name_A;

DecimalFormat是一个工具,可以准确地指定您希望在输出中看到的内容,尽管它输出的是String。它可以格式化各种各样的东西,最好查看上面的文档。它可以非常深入地处理您可能想要使用的字符。

    DecimalFormat dfMy_Variable_Name_A = new DecimalFormat("#");
    String newVariable = dfMy_Variable_Name_A.format(My_Variable_Name_A)

DecimalFormat("#")这是决定格式的部分。如果您想要"小数点后的X位数",您可以使用DecimalFormat("#.###")表示3位。如果你想确保你有一个逗号来分隔大数字,你可以使用DecimalFormat("#,###")

2) 至于问题的后半部分,您可以导入Math并使用Java中的abs()方法来删除负号。Math.abs(My_Variable_Name_A);

最新更新