当前位置: 首页 > 知识库问答 >
问题:

如何在浮点后保持零不加倍

郗亦
2023-03-14

我一直在想,找到了很多方法,当格式化成字符串时,可以从doubles中删除.0,但从来没有找到过如何为价格保留东西。

DecimalFormat format = new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
switch (position){
    case 0:price = 11.90;break;
    case 1:price = 1.2;break;
    case 2:price = 1.002;break;
    case 3:price = 1.0000;break;
}
System.out.println(format.format(price));
// 11.9
// or 1.2 
// or 1.002
// or 1

但我需要的是这样的女人

// 11.90
// 1.2 
// or 1.002
// or 1 

这不是一个重复的,因为它会在我不想要的任何价格上加上00...我只是想去掉浮点,如果它后面有零,但如果有一个数字,就保留任何零。

例如。

1.0, 1.00 or 1.00000
should print out 1
1.90, 1.900 or 1.90000
should print out the same 1.90, 1900 or 1.900000

共有1个答案

梁嘉祥
2023-03-14

1.901.9001.90000应打印出相同的1.9019001.900000

在基元上不能一直尾随零,因此0.90.90是完全相同的常量。

C#有decimal,但Java没有用于此目的的基元数据类型。

Java确实有一个具有类似行为的类,BigDecimal:

BigDecimal d1 = BigDecimal.valueOf(9, 1);  //  9/10^1
BigDecimal d2 = BigDecimal.valueOf(90, 2); //  9/10^2
System.out.println(d1); //0.9
System.out.println(d2); //0.90

http://ideone.com/1gigir

1.01.001.00000应打印出1

使用bigdecimal后,检查它是否为整数就不那么困难了:

public static boolean isIntegerValue(BigDecimal bd) {
  return bd.signum() == 0 || bd.scale() <= 0 || bd.stripTrailingZeros().scale() <= 0;
}

https://stackoverflow.com/A/12748321/360211

 类似资料:
  • 问题内容: 我正在从文件中读取数据,对其进行修改并将其写入另一个文件。新文件将被另一个程序读取,因此保持准确的格式至关重要 例如,输入文件中的数字之一是: 我的脚本对列应用了一些数学运算,应该返回 但是目前返回的是 我怎么会写一个浮动例如,作为一个文件? 问题答案: 将其格式化为6位小数: 演示: 该函数按照给定的格式说明将值转换为字符串。

  • 我正在从一个文件中读取数据,修改它并将其写入另一个文件。新文件将由另一个程序读取,因此保留精确的格式至关重要 例如,我输入文件中的一个数字是: 我的脚本对列应用了一些数学运算,应该会返回 但目前返回的是 我如何将浮点值(例如)写入一个文件中?

  • 在浮动范围组件上使用ngModel时出现运行时错误。:未指定名称属性的窗体控件没有值访问器 有什么解决方案可以在这两个组件之间绑定ngModel数据吗?

  • 问题内容: 我知道如何做X数量的前导零,并且我知道如何做X数量的小数点。但是,我该怎么办? 我希望有4个前导零,十进制精度为2:0000.00。因此43.4将是0043.40 问题答案: 尝试以下(C,Perl,PHP)格式的字符串:

  • 我只需要在Python中舍入浮点数的最后2个正数 EX: 0.000000302329303- 这是否可能以类似圆形的简单方式实现?

  • 问题内容: 尝试使用格式说明符来打印浮点数,该浮点数将小于1,且前导零。我想出了一点技巧,但我认为有一种方法可以将格式说明符中的前导零丢弃。我在文档中找不到它。 问题 哈克 问题答案: 尽管我喜欢可爱的正则表达式技巧,但我认为简单的函数是实现此目的的最佳方法: 这样做的好处是易于理解,部分原因是因为它是简单的字符串匹配而不是正则表达式。