I found表示Mathematica为以下代码提供True时,我感到很惊讶(在具有Mathematica 8.0.1的32位Windows XP上):

Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]] ===
 Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]]

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

最佳答案

我相信此行为与计算机有关,但是我不知道它与操作系统的关系如何。在我的机器上,仅当分母为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
n<511的两个图像之间存在差异
p1 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 0], Disk[]}]];
p2 = ImageData@Rasterize[Graphics[{RGBColor[0, 0, 1/257], Disk[]}]];
ArrayPlot[p1 - p2]

这种差异在n=510一直都是恒定的,等于1/255
Max[p2 - p1] === N[1/255]
Out[1]=True

10-05 18:15