Mathematica渲染和输出为不同颜色的RGB颜色值的最小差异是什么?

Ale*_*kov 5 rendering wolfram-mathematica mathematica-frontend mathematica-8

我很惊讶,当我发现那个数学给出True了下面的代码(在32位的Windows XP与数学 8.0.1):

Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] === 
 Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]]
Run Code Online (Sandbox Code Playgroud)

Mathematica渲染和输出为不同颜色的RGB颜色值的最小差异是什么?它是机器依赖的吗?

abc*_*bcd 4

我相信这种行为与机器相关,但我不知道它到底如何取决于操作系统。True在我的机器上,仅当分母为 时,它才计算为511

n = 257; 
While[(Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] === 
    Rasterize[Graphics[{RGBColor[0, 0, 1/n], Disk[]}]]) != True, 
 n++]; 
Print@n

Out[1]=511
Run Code Online (Sandbox Code Playgroud)

两幅图像之间存在差异n<511

p1 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]];
p2 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]];
ArrayPlot[p1 - p2]
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

该差值自始至终都是恒定的n=510并且等于1/255

Max[p2 - p1] === N[1/255]
Out[1]=True
Run Code Online (Sandbox Code Playgroud)