【问题标题】:Convert a double value to Packed decimal COBOL format PIC S9(5)V9(4) COMP-3/Packed decimal COBOL format PIC S9(3)V9(4) COMP-3 format in JAVA将双精度值转换为压缩十进制 COBOL 格式 PIC S9(5)V9(4) COMP-3/压缩十进制 COBOL 格式 PIC S9(3)V9(4) JAVA 中的 COMP-3 格式
【发布时间】:2021-06-07 06:59:52
【问题描述】:

我正在尝试在 JAVA 中将双精度值转换为压缩十进制 COBOL 格式 PIC S9(5)V9(4) COMP-3/压缩十进制 COBOL 格式 PIC S9(3)V9(4) COMP-3 格式,请参阅下面的例子:

双值:00000.6775 转换为压缩十进制:^@^FS,^@

这种对话在 java 中是可能的吗?

【问题讨论】:

  • 是的,这是可能的,但根据您参加的游览,这既不是一个好的答案,也不是 StackOverflow 的一个好问题。正如您现在知道的那样,我建议您尝试一下,使用您拥有的代码编辑问题(显示不是“现在在此处转换”,而是尝试转换)允许其他人提供帮助。我建议首先检查 comp-3 字段的编码方式(可能与字节有关),然后检查如何转换这些字节。
  • 能否请您编辑您的问题并删除重复的单词,并以有用的方式显示预期结果(^@^FS,^@ 没有用)

标签: java double cobol packed-decimal


【解决方案1】:

类似的问题已经在 Stack Overflow 上得到了多次回答

对于 s9(5)V9(4) comp-3,123.45 以字节格式表示为

00 12 34 50 0c

C是符号

是的,这是可能的,JRecord package 会做到这一点(尽管可能会截断多余的数字)。

方法是

  • 将 double 转换为无符号和未缩放的 long / BigInteger,即 123.45 --> 1234500(对于 s9(5)v9(4))
  • 将长整数转换为压缩十进制

此时有几种方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多