相关疑难解决方法(0)

如何在Java中将数字舍入到n个小数位

我想要的是一种将double转换为使用half-up方法进行舍入的字符串的方法 - 即如果要舍入的小数为5,则它总是向上舍入到前一个数字.这是在大多数情况下舍入大多数人所期望的标准方法.

我也希望只显示有效数字 - 即不应该有任何尾随零.

我知道这样做的一种方法是使用该String.format方法:

String.format("%.5g%n", 0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91239
Run Code Online (Sandbox Code Playgroud)

这很好,但它总是显示5位小数的数字,即使它们不重要:

String.format("%.5g%n", 0.912300);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91230
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用DecimalFormatter:

DecimalFormat df = new DecimalFormat("#.#####");
df.format(0.912385);
Run Code Online (Sandbox Code Playgroud)

收益:

0.91238
Run Code Online (Sandbox Code Playgroud)

但是你可以看到这使用了半均匀舍入.也就是说,如果前一个数字是偶数,它将向下舍入.我想要的是这个:

0.912385 -> 0.91239
0.912300 -> 0.9123
Run Code Online (Sandbox Code Playgroud)

在Java中实现这一目标的最佳方法是什么?

java decimal rounding digits

1209
推荐指数
22
解决办法
155万
查看次数

在Java中最多2位小数?

我已经阅读了很多stackoverflow问题,但似乎没有一个对我有用.我正在math.round()用来完善.这是代码:

class round{
    public static void main(String args[]){

    double a = 123.13698;
    double roundOff = Math.round(a*100)/100;

    System.out.println(roundOff);
}
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:123但我希望它是123.14.我读到添加*100/100会有所帮助但是你可以看到我没有设法让它工作.

输入和输出都是双倍的绝对必要.

如果您更改上面代码的第4行并发布它将会非常有用.

java

179
推荐指数
10
解决办法
81万
查看次数

Java中的双十进制格式

我在格式化双精度小数时遇到了一些问题.如果我有一个双精度值,例如4.0,我如何格式化小数,使其为4.00?

java double formatting decimal

107
推荐指数
6
解决办法
43万
查看次数

如何在点后将双倍转换为2个数字?

可能重复:
将小数点后的双精度数加到2位有效数字

如何在点后将双倍转换为2个数字?

例如:

double x=123.45678;
Run Code Online (Sandbox Code Playgroud)

我需要x=123.45(在java中为android)

提前致谢

java android

16
推荐指数
5
解决办法
7万
查看次数

在java中具有特定精度的双精度值

我正在编写一个简单的java程序.我需要从输入中获取一个字符串并将其分为两部分:1-double 2-string.然后我需要对double进行简单的计算,并以特定的精度将结果发送到输出(4).它工作正常,但输入为0时出现问题,然后它无法正常工作.

例如,对于这些输入,输出将是:

1公斤
产量:2.2046

3.1千克
产量:6.8343

但是当输入为0时,输出应为0.0000,但显示为0.0.我应该怎么做才能强制显示0.0000?

我读过关于双精度的类似帖子,他们建议类似于BigDecimal类,但在这种情况下我不能使用它们,我这样做的代码是:

line=input.nextLine();
array=line.split(" ");
value=Double.parseDouble(array[0]);
type=array[1];
value =value*2.2046;
String s = String.format("%.4f", value);
value = Double.parseDouble(s);
System.out.print(value+" kg\n");
Run Code Online (Sandbox Code Playgroud)

java double

11
推荐指数
2
解决办法
6万
查看次数

如何将double格式化为字符串(只有两位小数)?

我正在使用Android Studio为Android创建应用.我有一个代码块,收集一些字符串,将它们转换为双精度数,将它们放入方程式,然后将答案放入TextViews,只有两个小数位.

double weightDouble = Double.parseDouble(weightTextField.getText().toString());
                double dehydrationDouble = Double.parseDouble(dehydrationTextField.getText().toString());
                double lossesDouble = Double.parseDouble(lossesTextField.getText().toString());
                double factorDouble = Double.parseDouble(factorTextField.getText().toString());

                double fluidStepOne = (((Math.sqrt(Math.sqrt((weightDouble * weightDouble * weightDouble))))) * 70) * factorDouble;
                double fluidStepTwo = fluidStepOne + (weightDouble * dehydrationDouble * 10);
                double fluid24Hours = fluidStepTwo + lossesDouble;
                double fluidHourInt = fluid24Hours / 24;

                fluidResultLabel.setText(String.format(Locale.US, "%.2f", Double.toString(fluid24Hours)));
                fluidPerHourResultLabel.setText(String.format(Locale.US, "%.2f", Double.toString(fluidHourInt)));
Run Code Online (Sandbox Code Playgroud)

但是,当运行此代码块时,应用程序崩溃,Android Studio说这个 -

 java.util.IllegalFormatConversionException: %f can't format java.lang.String arguments
 at java.util.Formatter.badArgumentType(Formatter.java:1489)
 at java.util.Formatter.transformFromFloat(Formatter.java:2038)
 at java.util.Formatter.transform(Formatter.java:1465)
 at java.util.Formatter.doFormat(Formatter.java:1081)
 at java.util.Formatter.format(Formatter.java:1042)
 at java.util.Formatter.format(Formatter.java:1011)
 at …
Run Code Online (Sandbox Code Playgroud)

java string double android string-formatting

3
推荐指数
1
解决办法
3257
查看次数

在Java中返回一个只有两位小数的double作为更大字符串的一部分?

作为一个更大的程序的一部分,我有这个函数,当被调用时,返回返回的字符串.accountHolder,balance,interestRate和points是RewardsCreditAccount类型的对象中的变量.所以,例如,我在这里声明了一个对象:

RewardsCreditAccount testAccount = new RewardsCreditAccount("Joe F. Pyne", 7384.282343837483298347, 0.173, 567);
Run Code Online (Sandbox Code Playgroud)

所以这个对象将设置accountHolder ="Joe F. Pyne",balance = 7384.282343837483298347,依此类推.

在下面的函数中,我将这个信息返回一个字符串,如下所示:

Joe F. Pyne,7384.282美元,17.28%,567分

使用此功能:

    public String toString() {
    return (accountHolder + ", $" +  + balance + 100*interestRate + "%, " + points + " points");
}
Run Code Online (Sandbox Code Playgroud)

但是,它实际上是返回此:

Joe F. Pyne,$ 7384.282,17.299999999999997%,567分

我试过这个,但无济于事

public String toString() {
    return (accountHolder + ", $" +  + ("%,1.2f",balance) + 100*interestRate + "%, " + points + " points");
}
Run Code Online (Sandbox Code Playgroud)

这很烦人,因为我希望它只返回两个小数位.我知道这可以使用%1.2f完成,但我不知道如何格式化语法.我非常感谢任何有关正确显示十进制值的帮助.谢谢!

java floating-point formatting return decimal

0
推荐指数
2
解决办法
4993
查看次数

如何在float中获取3个字符?

我有浮点值像0.152545我只想要0.1f.
怎么可能..
通过使用String我得到了String值.下面的代码显示了结果.

 String pass = pass.substring(0, Math.min(pass.length(), 3));
 pass=pass+"f";
Run Code Online (Sandbox Code Playgroud)

这给了我类似于0.1f的字符串值,但我只想要像0.1f那样的Float值.

java

0
推荐指数
1
解决办法
98
查看次数