当前位置: 首页 > 面试题库 >

Java中为零时的负号

劳亦
2023-03-14
问题内容

当结果返回零时,是否有任何方法可以截断负号;使用十进制格式时?

DecimalFormat df = new DecimalFormat("#,##0.0");
df.setRoundingMode(RoundingMode.HALF_UP);
formattedValue = df.format("-0.023");

上面的代码返回-0.0。有什么办法可以使它只返回0.0?但是,当结果为负数时,我想保留负号。


问题答案:

我不认为仅用一种方法就可以做到这一点DecimalFormat,但是这种单线解决了这个问题:

formattedValue = formattedValue.replaceAll( "^-(?=0(\\.0*)?$)", "");

它消除(其替换""减号),如果它后面跟着0-n个字符的"0.00000...",所以这将任何结果,如类似的工作"-0""-0.""-0.000000000"

这是一些测试代码

public static void main(String[] args) {
    System.out.println(format(-0.023));
    System.out.println(format(12.123));
    System.out.println(format(-12.345));
    System.out.println(format(-0.123));
    System.out.println(format(-1.777));
}

public static String format(double number) {
    DecimalFormat df = new DecimalFormat("#,##0.0");
    df.setRoundingMode(RoundingMode.HALF_UP);
    String formattedValue = df.format(number);
    formattedValue = formattedValue.replaceAll("^-(?=0(\\.0*)?$)", "");
    return formattedValue;
}

输出(预期):

0.0
12.1
-12.3
-0.1
-1.8


 类似资料:
  • 在我的代码中, 与负零相比 结果将为true。 但是 与负零相比 此外,结果将为true,而不是false 为什么这两种情况的结果都是真的? 这里有一个MCVE来测试它(在coliru上直播): 输出:

  • 问题内容: IEEE754支持负零。但是这段代码 输出 我本来期望的 浮动格式基于IEEE754的其他语言可让您创建负零文字 Java的: C# : Javascript: 但是我在Go中找不到等效项。 您如何在go中编写一个负零文字? 问题答案: 有一个已注册的问题。 碰巧提供了一种解决方案: 还不错,因为它显然引用了定义的标准函数。 但这意味着您需要导入一个软件包,而对于(当然较小且很少见的)

  • 问题内容: 我有以下格式化字符串的方法: 如果是负的零(,等)的输出将是。 如何使输出始终始终为负的零值和正的零值? (实现此目标相当简单,但我找不到所谓的简洁pythonic方式。理想情况下,有一个我不知道的字符串格式设置选项。) 问题答案: 加零: 您可以格式化:

  • 问题内容: 我想知道是否有某种方式将所有DataFrame负数替换为零? 问题答案: 如果所有列都是数字列,则可以使用布尔索引: 对于更一般的情况,此答案显示了private方法: 使用类型,布尔索引似乎可以在单独的列上工作,但不能在整个数据帧上工作。因此,您可以执行以下操作: 更新: 与整个DataFrame上的作品进行比较:

  • 问题内容: 我有一些代码已从Java移植到C ++ 但是在C ++ 中,可以是或,当等于时它将失败检查。 我试图在下面的代码中将负零值进行调整,但它从未命中DEBUG(“ Negative zero”)行。但是打印等于。 有什么建议吗? 测试代码: 测试结果: GCC: 旗帜: 回答: 我已经使用@amit的答案来进行以下操作。 这似乎可行。 问题答案: 好吧,使用s 时的一般建议是记住它们是不精

  • 我最后几天都在和epoll做斗争,现在我在一个不知道的地方;) 网络上有很多信息,很明显在系统里,伙计,但我可能服用过量,有点困惑。 在我的服务器应用程序(到nginx的后端)中,我正在以ET模式等待来自客户端的数据: 据我所知,send()还可能返回-1和EAGAIN,这意味着我应该在EPOLLOUT上订阅,并等待内核缓冲区空闲到可以从我的ME接收一些数据时。这样对吗?但如果客户不等那么久呢?或