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

JAVA数学从大十进制到Avro。avdl文件

晋功
2023-03-14

我在为java编写Avro模式时遇到问题。数学BigDecimal类型,我尝试了以下方法:

  1. 基于Avro官方文档,我知道我需要自己定义逻辑类型来支持BigDecimal,但是这个链接只在avsc中给出了例子,我试图在avdl中找到它。
  2. 基于Avro doc和这个例子,我在avdl下面写了:

'

@namespace("test")
protocol My_Protocol_v1 {

  record BigDecimal {
        @java-class("java.math.BigDecimal") string value;
  }

'

但它不起作用:这个IDL模式编译得很好,可以生成一个名为BigDecimal的Java类,但我不能真正将生成的BigDecimal用作Java。数学大十进制,怎么了?或者我该怎么做?

谢谢

共有3个答案

宗政燕七
2023-03-14

decimal(10,2)未在avsc架构中生成decimal数据类型,即使编译器版本已更改为1.8.2版本。。

令狐翰
2023-03-14

为了说明它在新版本中的工作原理:
我们刚刚开始使用1.8.2的rc4,您可以使用以下语法创建BigDecimal字段:

record Thing {
    decimal(10,2) foo;
}

Thing类将具有一个BigDecimal属性foo,精度为10,刻度为2。

须巴英
2023-03-14

好的,所以我给ApacheAvroDev发了一封电子邮件,得到了DougCutting的回复(非常感谢Doug)。

我相信这已经实施,但尚未发布。

该计划于以下时间实施:https://issues.apache.org/jira/browse/AVRO-1847

这将包含在1.8.2版本中,该版本很快就会发布。

 类似资料:
  • 问题内容: 我有一个Java文件 我想将 pic.bmp 转换为十六进制值的数组,以便可以编辑并将其保存为修改后的版本。 是否有Java类可以做到这一点? 问题答案: 你真幸运。我几个月前不得不这样做。这是一个精简版,需要从命令行获取两个参数。命令行参数都是文件名…第一个是输入文件,第二个是输出文件。输入文件以二进制形式读取,输出文件以ASCII十六进制形式写入。希望您可以根据自己的需要进行调整。

  • 我想做一个java程序,用户输入一个十进制数,然后它转换成二进制。这是我到目前为止所拥有的,但是当我输入8时,虽然循环只循环一次,只给我0。我知道二进制中的8是1000,所以我不明白我做错了什么。我需要代码变得简单。请帮忙谢谢

  • 问题内容: 我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位? EG这是给定左侧十六进制的预期输出: 谢谢! 问题答案: 这似乎在欺骗Java转换数字而不强制给出正结果: 当然,这种情况仅适用于8、16、32和64位2的补码:

  • 问题内容: 我有一个家庭作业,需要在十进制,二进制和十六进制之间进行三向转换。我需要帮助的功能是将十进制转换为十六进制。我几乎不了解十六进制,但是如何将十进制转换为十六进制。我需要一个接受并返回的函数。不幸的是我没有此功能的任何草稿,我完全迷路了。我只有这个。 另外,我不能使用诸如Integer.toHexString()之类的预制函数或任何其他东西,我需要真正地制作算法,否则我什么都不会学。 问

  • 问题内容: 我正在尝试将String十六进制转换为整数。从哈希函数(sha-1)计算出十六进制字符串。我收到此错误:java.lang.NumberFormatException。我猜它不喜欢十六进制的String表示形式。我该如何实现。这是我的代码: 例如,当我传递以下字符串: _DTOWsHJbEeC6VuzWPawcLA时 ,他的哈希值是: 0xC934E5D372B2AB6D0A50B9F

  • 本文向大家介绍科学知识:二进制、八进制、十进制、十六进制转换,包括了科学知识:二进制、八进制、十进制、十六进制转换的使用技巧和注意事项,需要的朋友参考一下 一、 十进制与二进制之间的转换 (1) 十进制转换为二进制,分为整数部分和小数部分 ① 整数部分 方法:除2取余,逆序排列,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为