如何从Java中的'double'类型的值中删除十进制值

时间:2013-09-27 21:34:04

标签: java

我正在调用一个名为“calculateStampDuty”的方法,它将返回 在物业上支付的印花税金额。百分比计算有效 罚款,并返回正确的值“15000.0”。但是,我想显示值 前端用户只是“15000”,所以只想删除小数和任何前面的值 其后。如何才能做到这一点?我的代码如下:

float HouseValue = 150000;
double percentageValue;

percentageValue = calculateStampDuty(10, HouseValue);

private double calculateStampDuty(int PercentageIn, double HouseValueIn){
    double test = PercentageIn * HouseValueIn / 100;
    return test;
}

我尝试了以下内容:

  • 创建一个新的字符串,它将double值转换为字符串,如下所示:

    String newValue = percentageValue.toString();

  • 我尝试在String对象上使用'valueOf'方法,如下所示:

    String total2 = String.valueOf(percentageValue);

但是,我只是无法获得没有小数位的值。有人知道吗 在这个例子中你将如何获得“15000”而不是“15000.0”?

由于

21 个答案:

答案 0 :(得分:47)

美好而简单。将此代码段添加到您输出的任何内容中:

String.format("%.0f", percentageValue)

答案 1 :(得分:38)

您可以将double值转换为int值。 int x = (int) y其中y是你的双变量。然后,打印x不会给出小数位(15000而不是15000.0)。

答案 2 :(得分:17)

我这样做是为了从double

中删除小数位
new DecimalFormat("#").format(100.0);

以上的输出是

  

100

答案 3 :(得分:12)

您可以使用

String newValue = Integer.toString((int)percentageValue);

或者

String newValue = Double.toString(Math.floor(percentageValue));

答案 4 :(得分:10)

您可以使用显式类型广告在一行代码中将doublefloat个变量转换为integer

float x = 3.05
int y = (int) x;
System.out.println(y);

输出将为3

答案 5 :(得分:5)

我会试试这个:

String numWihoutDecimal = String.valueOf(percentageValue).split("\\.")[0];

我已经测试了这个并且它可以工作,所以它只是从这个字符串转换为任何类型的数字或你想要的任何变量。你可以这样做。

int num = Integer.parseInt(String.valueOf(percentageValue).split("\\.")[0]);

答案 6 :(得分:2)

使用 Math.Round(double);

我自己用过。实际上,它舍入了小数位。

d = 19.82;
ans = Math.round(d);
System.out.println(ans);
// Output : 20 

d = 19.33;
ans = Math.round(d);
System.out.println(ans);
// Output : 19 

希望对您有帮助:-)

答案 7 :(得分:2)

Double d = 1000d;
System.out.println("Normal value :"+d);
System.out.println("Without decimal points :"+d.longValue());

答案 8 :(得分:1)

简单的删除方法

new java.text.DecimalFormat("#").format(value)

答案 9 :(得分:1)

你可以使用DecimalFormat,但请注意在这些情况下使用double不是一个好主意,而是使用BigDecimal

答案 10 :(得分:1)

声明一个 double 值并转换为 long 转换为字符串并格式化为浮动 double 值最终将所有值替换为 123456789,0000 到 123456789

Double value = double value ;
Long longValue = value.longValue();  String strCellValue1 = new String(longValue.toString().format("%f",value).replaceAll("\\,?0*$", ""));

答案 11 :(得分:1)

Double i = Double.parseDouble("String with double value");

Log.i(tag, "display double " + i);

try {
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(0); // set as you need
    String myStringmax = nf.format(i);

    String result = myStringmax.replaceAll("[-+.^:,]", "");

    Double i = Double.parseDouble(result);

    int max = Integer.parseInt(result);
} catch (Exception e) {
    System.out.println("ex=" + e);
}

答案 12 :(得分:1)

或者,您可以使用方法int integerValue = (int)Math.round(double a);

答案 13 :(得分:1)

类型转换为整数可能会产生问题,但即使类型在缩小到小数位后也无法保持每一位双精度数。如果您知道您的值永远不会超过 Long.MAX_VALUE 值,那么这可能是一个干净的解决方案。

因此,请使用以下已知风险。

double mValue = 1234567890.123456;
long mStrippedValue = new Double(mValue).longValue();

答案 14 :(得分:1)

试试这个你会从格式方法中得到一个字符串。

DecimalFormat df = new DecimalFormat("##0");

df.format((Math.round(doubleValue * 100.0) / 100.0));

答案 15 :(得分:1)

String truncatedValue = String.format("%f", percentageValue).split("\\.")[0];解决了目的

问题有两个 -

  1. 保留double的积分(数学整数)部分。因此无法进行类型转换(int) percentageValue
  2. 截断(而不是舍入)小数部分。因此,不能使用String.format("%.0f", percentageValue)new java.text.DecimalFormat("#").format(percentageValue)作为小数部分的这两个部分。

答案 16 :(得分:0)

演员。你基本上是在告诉编译器“我知道我会丢失信息,但这没关系”。然后将转换后的整数转换为字符串以显示它。

String newValue = ((int) percentageValue).toString();

答案 17 :(得分:0)

尝试:

String newValue = String.format("%d", (int)d);

答案 18 :(得分:0)

这应该可以解决问题。

System.out.println(percentageValue.split(“ \。”)[0]);

答案 19 :(得分:0)

解决方案是使用DecimalFormat class。此类提供了许多格式化数字的功能 要获得double值作为字符串,没有小数,请使用下面的代码。

DecimalFormat decimalFormat = new DecimalFormat(".");
decimalFormat.setGroupingUsed(false);
decimalFormat.setDecimalSeparatorAlwaysShown(false);

String year = decimalFormat.format(32024.2345D);

答案 20 :(得分:-1)

    public class RemoveDecimalPoint{

         public static void main(String []args){
            System.out.println(""+ removePoint(250022005.60));
         }
 
       public static String  removePoint(double number) {        
            long x = (long) number;
            return x+"";
        }

    }