Рассмотрим следующую программу и вывод:Почему в двоичном формате. формат отличается от ширины 58?
data _null_;
input a;
length b $64;
do i = 1 to 64;
fmtname = cats('binary',i);
b = cats(putn(a,fmtname));
put i= b=;
end;
cards;
1
;
run;
Output (SAS 9.1.3, Windows 7 x64):
i=1 b=1
i=2 b=01
i=3 b=001
i=4 b=0001
i=5 b=00001
/*Skipped a few very similar lines*/
i=58 b=0000000000000000000000000000000000000000000000000000000001
i=59 b=11111110000000000000000000000000000000000000000000000000000
i=60 b=111111110000000000000000000000000000000000000000000000000000
i=61 b=1111111110000000000000000000000000000000000000000000000000000
i=62 b=11111111110000000000000000000000000000000000000000000000000000
i=63 b=011111111110000000000000000000000000000000000000000000000000000
i=64 b=0011111111110000000000000000000000000000000000000000000000000000
Последние несколько строк вывода из SAS 9.4 на Linux x64:
i=60 b=000000000000000000000000000000000000000000000000000000000001
i=61 b=1111111110000000000000000000000000000000000000000000000000000
i=62 b=11111111110000000000000000000000000000000000000000000000000000
i=63 b=011111111110000000000000000000000000000000000000000000000000000
i=64 b=0011111111110000000000000000000000000000000000000000000000000000
Такое поведение довольно неожиданно для меня, по крайней мере, и, похоже, не документировано на help page. Это согласуется с документом, который я нашел here для ширины 64 - стандартная двойная точность - но я не понимаю, почему он переворачивается на ширину 59.
Я удалил бит в конце о том, почему значения являются «правильными», отчасти потому, что мой объяснение было недостаточно конкретным, а отчасти потому, что это действительно отдельный вопрос. Если вы хотите это знать (почему значение представления 'binary64', или' 001111111111000 ... ', верно для 1), задайте другой вопрос, и я поставлю там более подробный ответ. – Joe
Кроме того, особенно если это повлияло на ваше программирование, рекомендуется добавить в TS билет с SAS об этом, поэтому они обновляют документацию. Документация SAS очень поражает и пропускает, и всегда полезно обновлять ее, когда вы видите что-то не хватает. – Joe
Итак, возможно, как системное, так и * зависимое от версии поведение? Это скорее не подходит для SAS. Я согласен с тем, что некоторая лучшая документация, конечно, не повредит. – user667489