问题标签 [jsr354]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
482 浏览

java - JSR-354 MonetaryAmountFormat 对于除 $、€ 或 £ 以外的其他货币符号不能以两种方式工作

这是我在Moneta 1.1 版中使用的示例代码:

这应该可以工作,因为我正在来回转换同一个对象。除非我做错了什么,并且转换器不是美元、欧元或英镑以外的其他货币的双向转换器。

最后一行崩溃:

如果提供的语言环境不与 $、€ 或 £ 之一相关联,则会发生这种情况。例如,此代码适用于Locale.US,但会崩溃Locale.CHINA以及 with new Locale("pl", "PL")。因此,这不仅是自定义定义Locale的问题,也是静态预定义的问题。

我挖了一点内部包,发现org.javamoney.moneta.internal.format.CurrencyToken.parse(CurrencyToken.java:196)它看起来像:

有什么方法可以使我的上述代码适用于美元、欧元或英镑以外的货币?


我尝试了更多的东西,例如提供 Locale.CANADA 他们也有 $ 作为货币符号,所以它执行没有失败但返回错误的数据

最后一行返回USD而不是CADif-else 对 $ 所做的。我认为它也错误地假设符号 - 货币是一对一的映射。

0 投票
1 回答
572 浏览

java - 如何在 jsr-354 中更改 MonetaryAmount 部门的四舍五入

我将jsr-354 org.javamoney.monetaapi 用于货币。

我需要分钱,例如我想将四舍五入设置为 0.25

所以 100 美元/3 应该是 33.25

默认

结果是 33.3333

是否有一种方法可以为此设置舍入,或者其他解决方案?

0 投票
1 回答
3276 浏览

java - 如何使用货币符号格式化 MonetaryAmount?

编辑:这个问题旨在用于在 JSR-354 的上下文中进行格式化。另一种方法是使用java.util.CurrencyFormat. 但我想知道如何使用MonetaryAmountFormat.

如何MonetaryAmount在 JSR-354 的上下文中使用货币符号格式化 a MonetaryAmountFormat

我尝试使用MonetaryAmountFormat我在网上找到的两个不同示例,如下所示。这两种方法都不能正常工作,所以我将我的示例测试用例推送到github,以防你想克隆并查看完整的详细信息,但这里是测试:

pom.xml

TestMonetaryAmountFormat.java

0 投票
1 回答
913 浏览

java - 自定义MonetaryAmount JSR354/mo​​neta的Databind Json序列化格式

我正在尝试使用 MonetaryAmount 字段作为字符串的 Json 序列化 POJO,但生成的输出不遵循规定的形状格式。

任何想法我做错了什么?我在此代码中将厨房水槽扔在这里,仅用于说明目的和紧凑的演示。

0 投票
2 回答
1219 浏览

java - 从 ISO **numeric** 货币代码中查找 CurrencyUnit

给定 ISO 4217数字货币代码,我正在尝试使用正确的格式规则来格式化金额。

例如,给定金额 99.99 和数字代码 840,我希望生成一个字符串 'USD 99.99' 或类似的字符串。

查看 JSR 354 的实现,似乎我需要先找到合适的货币单位。但是,我似乎无法为此目的编写有效的 CurrencyQuery。

给定

我收到以下异常:

我应该如何编写货币查询?有没有更好的办法?

TestCurrencyQuery.java

pom.xml

控制台输出

0 投票
1 回答
1725 浏览

java - Java 8 中的 JSR 354 金钱

我需要在我的 Java 8 应用程序中进行 Money 计算。由于我需要做的操作是基本操作,我正在考虑创建自己的 Money 类。但是从长远来看,我看到 Java9 有自己的 Money 实现,当我们将应用程序迁移到 Java 9 时,我们可能希望迁移到它。

无论如何我可以在 Java 8 中使用 JSR 354 实现来赚钱吗?如果是的话,这会是现在推荐的在 Java 8 中做 Money 的方法吗? https://jcp.org/aboutJava/communityprocess/final/jsr354/index.html

编辑:我错了,JSR 354 不在 Java 9 中。但我的问题仍然是关于如何在 Java 8 中使用 Money,这是在 Java 中处理 Money 的推荐方法。

0 投票
1 回答
1786 浏览

hibernate - 金额的 JPA 映射

我有兴趣将 JSR 354 Money API 合并到我的应用程序中,并希望能够使用 JPA 将 MoneyAmount 映射为 Embeddable 但我们似乎无法做到,因为 Moneta 实现类的无参数构造函数是私有的并且 JPA(或至少休眠)要求它受到保护。

我们试图扩展它以提供一个受保护的构造函数,但该类是最终的,所以也不能这样做。

首先,假设:

  1. 我不是唯一一个可能想要这样做的人
  2. 与 JPA 的互操作性对于此 JSR 很重要

我建议增强规范以要求实现为此目的提供受保护的构造函数?

其次,Moneta RI 团队是否会考虑将默认 arg 构造函数访问权限放宽到受保护级别?如果课程是最终的,它应该没有任何缺点吗?

第三,如果这种改变可能需要一段时间,那么任何人都可以在此期间想到一个优雅的解决方法(除了分叉我们自己的实现)吗?

0 投票
2 回答
733 浏览

jsf - ClassNotFoundException 在 GlassFish 5.0 Server 上部署 Java EE 应用程序时

在部署 Java EE 7 应用程序的过程中,该应用程序打包在具有最小实体的 WAR 中

和一个带接口的最小 EJB

和实施

和一个后备豆

在 GlassFish 5.0 上部署期间出现以下异常:

缺少的类型在

MCVE 可在https://gitlab.com/krichter/monteta-clazz-not-found-issue获得。

0 投票
1 回答
923 浏览

java - Java 快钱表示法?

我正在开发一个实时应用程序,该应用程序使用 BigDecimal 处理不同货币和汇率的货币,但是我面临一些严重的性能问题,我想更改底层表示。

我一遍又一遍地读到,在 Java 中表示货币的一种快速且快速的方法是使用 long 存储美分(或任何所需的精度)。正如其中一条评论指出的那样,有一些带有包装器的库可以做到这一点,例如来自 JavaMoney 的FastMoney

这里有两个问题。

  1. 将钱长期存放(或包装内)并将其他所有内容(例如汇率)加倍存放是否总是安全的换句话说,如果我这样做Math.round(money * rate)(钱是美分,汇率是双倍),我会不会遇到与所有东西都翻倍的基本相同的问题?

  2. FastMoney 和许多其他库仅支持它们与原始类型之间的操作。profit.divide(investment)如果我做不到(两者都是 FastMoney),我应该如何准确表示投资回报。我想我的想法是我将两者都转换为双打然后将它们分开,但这不准确吗?

0 投票
1 回答
298 浏览

java - JavaMoney:设置 CurrencyStyle 而不依赖于 moneta

我正在尝试创建一个MonetaryAmountFormat使用货币单位符号的:

(取自How to format MonetaryAmount with currency symbol?Customizing a MonetaryAmountFormat using the Moneta (JavaMoney) JSR354 implementation)。

java/maven 项目在运行时(不是编译时)范围内依赖于 moneta。似乎该类CurrencyStyle及其值SYMBOL是 moneta(java-money 参考实现)的一部分,而不是 java-money API 的一部分。因此,代码无法编译。

我创建了这个丑陋的解决方法:

是否可以创建一个MonetaryAmountFormat使用货币单位符号而无需此 hack?