是什么在后记后记一般问题
/Total psi.subtotal Total add def\n
以下几条平均ps1.subtotal是我在其他地方居住,并为货币数据类型的变量(例如:10.00美元)
按我的理解上面的代码行添加psi.subtotal和Total,然后将结果存储在Total中。 如果是这样,我看到这个PS在上面的线出错。我在一些地方也看到,即使对于整数加法,变量也首先转换为字符串,然后对变量执行加法或任何其他操作。 是这样吗?
感谢
是什么在后记后记一般问题
/Total psi.subtotal Total add def\n
以下几条平均ps1.subtotal是我在其他地方居住,并为货币数据类型的变量(例如:10.00美元)
按我的理解上面的代码行添加psi.subtotal和Total,然后将结果存储在Total中。 如果是这样,我看到这个PS在上面的线出错。我在一些地方也看到,即使对于整数加法,变量也首先转换为字符串,然后对变量执行加法或任何其他操作。 是这样吗?
感谢
AFAIK没有货币数据类型,所以我想这两个psi.subtotal
和Total
是类型真正的。 add
操作添加整数或实数。 PostScript Language Reference写得相当不错,而且相对容易理解,其数据类型为page 48,算术运算符为page 66。 “
”上面的代码行添加了psi.subtotal和Total,然后将结果存储在Total中“是对代码应该做什么的很好的总结。
PostScript没有内置货币类型(请参阅PostScript语言参考第3版,第3.3节)。创建类似货币类型的东西并不难。一种方法是通过定义一个自定义添加操作符。
变量通常通过将一个对象(如数字)推到操作数栈上来工作。内置的add运算符只能用于数字(同上,第527页)。例如,如果您尝试使用字符串,您将看到'typecheck'错误。
但是,您提供的代码不能保证psi.subtotal和Total是货币值(无论货币是什么意思)。没有办法知道代码是否运行标准的“添加”。
这将有助于了解错误的细节,以及如何在代码执行之前定义Total和psi.subtotal。并且是否添加已被重新定义。
下面的代码显示了你的代码如何表示两种不同的东西。
(Using numbers for currencies...) =
/psi.subtotal 42.5 def
/Total 37 def
/Total psi.subtotal Total add def %%%%%%%%%%%%%%%%%% Your code.
(Total) print Total ==
(Using strings for currencies...) =
/psi.subtotal (42.50) def
/Total (37.00) def
/standard_add { add } bind def
/currency_add { % stack: str str -- both string reps of numbers
cvr % stack: str num
exch % stack: num str
cvr % stack: num num
standard_add % stack: num
20 string % stack: num str
cvs % stack: str
}
def
/add { currency_add } def % Override existing add.
/Total psi.subtotal Total add def %%%%%%%%%%%%%%%%%% Your code.
(Total) print Total =
flush
这基本上是'Total'(name)='psi.subtotal'(一个值)+'Total'(值,再次)。不过,我并不熟悉在PostScript中使用实际数据类型或货币的功能。 – Joey 2010-11-14 14:52:17
您发布的代码没有任何问题。它对我的翻译工作正常。请将您的程序降至实际失败的问题案例,并描述您所得到的实际错误。 – 2010-11-14 15:00:13