在PDF格式中,数字1.e10应写为1000000000。?

在PDF格式中,数字1.e10应写为1000000000。?,pdf,biginteger,specifications,Pdf,Biginteger,Specifications,查看关于类型为数字的对象如何 根据其通知的有效语法编写 注意:PDF不支持带字符的数字的PostScript语法 非小数半径(如16#FFFE)或指数形式(如 同于6.02E23) 但是,它也没有规定数字应在的最大范围内。这似乎表明写作是正确的 1.00E10as1000000000 或 1.00E-50as0.00000000000000000000000000000000000000000000000000000001 因此,这个问题有两个方面: a) 符号是否正确(如示例所示) b) p

查看关于类型为数字的对象如何 根据其通知的有效语法编写

注意:PDF不支持带字符的数字的PostScript语法 非小数半径(如16#FFFE)或指数形式(如 同于6.02E23)

但是,它也没有规定数字应在的最大范围内。这似乎表明写作是正确的

1.00E10
as
1000000000

1.00E-50
as
0.00000000000000000000000000000000000000000000000000000001

因此,这个问题有两个方面:

  • a) 符号是否正确(如示例所示)
  • b) pdf格式是否期望实现使用(或至少退回) 对于某些bigint/bigfloat处理),它似乎不提供 数字的范围是多少

首先,有关PDF的规范性信息,您应该参考适当的ISO标准,特别是ISO 32000。是的,第1部分(ISO 32000-1)特别是源自PDF参考1.7,没有太多更改,但也不是没有更改。(好的,在某些情况下,还必须查阅旧的PDF参考资料,以了解其中的一些更改。)

Adobe已在其网站上发布了一份副本(删除了页面标题中的“ISO”):

现在谈谈你的问题:

根据ISO 32000,第1部分和第2部分:

整数应写成一个或多个十进制数字,可选择前面加符号。[……]

实值应写成一个或多个带可选符号和前导、尾随或嵌入句点(2Eh)(小数点)的十进制数字

(第7.3.3节“数字对象”)

因此,关于你的问题a)

符号是否正确(如示例所示)

是,
1000000000
是一个整数值对象,
0.00000000000000000000000000000000000000000001
是一个实值数值对象

关于你的问题(b)

pdf格式是否希望实现使用(或者至少退回到一些bigint/bigfloat处理)数字,因为它似乎没有为数字提供任何范围

不,在上面引用的同一部分中,您还可以找到

数字的范围和精度可能受到运行一致性读取器的计算机中使用的内部表示的限制;附录C给出了典型实施的这些限制

附录C建议至少达到以下限值:

整数 2,147,483,647 最大整数值;等于231− 一,

整数 -2,147,483,648 最小整数值;等于−231

real ±3.403 × 1038 最大和最小实值(近似值)

real ±1.175 × 10-38 最接近0的非零实值(近似值)。比这些值更接近的值将自动转换为0

real 5. 小数部分精度的有效小数位数(近似值)

(ISO 32000-1)

整数 整数值(如对象编号)通常可以在32位内表示

实数 现代计算机通常使用IEEE浮点运算标准(IEEE 754)单精度或双精度来表示和处理实数


(ISO 32000-2)

因此您的答案确认,对于表示
1.00E-37
(建议在支持的范围内),PDF语法中的值应正确表示为该字符串
0.0000000000000000000000000000001
。(也非常感谢您插入对其他标准的引用,我不知道1.7引用部分过时)@humanityANDpeace您甚至可以继续表达您问题中的1E-50,您只需注意,PDF处理器很可能会将其视为零。因为
1E-50
超出安全范围。无论如何,我要掌握的是一个挑战,或者在我看来是必须使用冗长的符号。使用类似于
1e-50
1e50
的符号没有变化,但它必须始终是一个多或少约53个字符的字符串标记(以防有小数点分隔符和符号)。@humanityANDpeace总是很长的符号,是的。但这并不是那么糟糕,一方面,你通常很少需要这么小或这么大的数字,另一方面,这样的零序列通常可以很好地压缩(如果在流中)。@mki我理解,主要是对于那些罕见的大数字,记法似乎很不寻常/奇怪,这促使我提出这个问题,我想我可能还没有完全理解。但现在看来,这是我第一次想到的:
0000000000000000000000000000001
是PDF的语法,用于
1.00E-37
,我现在毫无疑问地知道了!谢谢你,mki