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

Quarkus Qute双精度带2位小数

魏元白
2023-03-14

标题中说了一切。我想转换字符串中的双2小数。

我尝试了夸克斯的例子:

@TemplateExtension(namespace = "str")
class StringExtensions {

   static String format(String fmt, Object... args) {
      return String.format(fmt, args);
   }

   static String reverse(String val) {
      return new StringBuilder(val).reverse().toString();
   }
}

这是我的模板

{str:format('%.2f', total)}

但它总是导致NOT_FOUND。

唯一的方法是把:

    static String formatNumber(Double num) {
        return String.format("%.2f", num);
    }

并更改我的模板:

{total.formatNumber}

有更好的办法吗?我使用了quarkus rest easy qute和quarkus qute扩展,两者都是相同的。

共有1个答案

江俊能
2023-03-14

对于具有命名空间的扩展方法,处理varargs的方式存在缺陷。我刚刚创建了一个带有补丁的公关:https://github.com/quarkusio/quarkus/pull/14226.

一个难看的解决方法是在模板中使用一个额外的“伪”参数,例如{str:format('%.2f',total,1)},并以指定的格式忽略此参数。

 类似资料:
  • 我想用一个小数点和一个小数位的格式将任何双精度四舍五入为双精度,这样29575.347434将是2.3。 我试着用decimalFormat做这个,但当我试着我只得到了一个29575.3格式的字符串,带有一个,我不知道如何在保留值为双精度的同时去掉所有小数点。

  • 问题内容: 我想四舍五入: 至: 我已经使用了这两种方法: 和 但它一直在打印: 有人对此有解决方案吗?因为我真的认为这应该可行。谢谢你的帮助。 问题答案: 您的第一个解决方案确实非常接近。只是这样做: 您的版本无法正常运行的原因是,您使用了double格式,使用2dp将其格式化为,然后又将其转换回了。 然后照常打印,没有特殊的小数位规则。

  • 问题内容: 应该很容易。我本来是用javascript来做的,但是在设置我的处理程序页面中的表单之前必须先做。无论如何,我需要使这些值具有2个小数位。Ex 219333.5888888必须为219333.58。有修剪功能或其他功能吗? 问题答案: 这是格式化十进制值的简单示例

  • 问题内容: 我想使用双精度最多2个小数位。即,它将最多存储2个小数位,如果比较两个双精度值,则比较应仅基于前2个小数位。如何实现这样的事情?我的意思是存储,比较所有内容都将仅基于小数点后两位。其余位置可能不同,大于,小于,无所谓。 编辑 我的价值观不大。说从0到5000最大值。但是我必须乘以Cos A,Sin A很多次,其中A的值在程序过程中不断变化。 编辑 在我的程序中,汽车以特定速度(例如12

  • 目前,我正在使用以下代码来格式化“值”常量: 我得到的结果是2366.34,但我希望它是0.05的倍数。在这种情况下,它应该是2366.35。 最好的方法是什么?

  • 3、双精度移位指令 此组指令有:双精度左移SHLD(Shift Left Double)和双精度右移SHRD(Shift Right Double)。它们都是具有三个操作数的指令,其指令的格式如下: SHLD/SHRD Reg/Mem, Reg, CL/Imm;80386+ 其中:第一操作数是一个16位/32位的寄存器或存储单元;第二操作数(与前者具有相同位数)一定是寄存器;第三操作数是移动的位数