Zależy to od wdrożenia, ale byłoby to bardzo, bardzo mało prawdopodobne .
Przyznaję, że nie przeczytałem szczegółów implementacji różnych silników przeglądarki, a CSS nie określa żadnego konkretnego rodzaju przechowywania numerów. Uważam jednak, że można bezpiecznie założyć, że wszystkie główne przeglądarki używają 64-bitowych liczb zmiennoprzecinkowych podwójnej precyzji („podwaja się”, aby pożyczyć termin z C / C ++), aby obsłużyć większość swoich potrzeb numerycznych w CSS , ponieważ tego właśnie używa JavaScript w przypadku liczb, a więc użycie tego samego typu ułatwia integrację.
Z punktu widzenia komputera wszystkie podwójne przenoszą tę samą ilość danych: 64 bity, bez względu na to, czy wartość wynosi 1, -3,14, czy 1000000, czy 1e100 . Czas potrzebny na wykonanie operacji na tych liczbach nie zależy od rzeczywistej wartości tych liczb, ponieważ zawsze działa na tej samej ilości danych. Kompromis polega na robieniu rzeczy w ten sposób, że liczby podwójne nie mogą dokładnie reprezentować wszystkich liczb (lub nawet wszystkich liczb w swoim zakresie), ale mogą zbliżyć się wystarczająco do większości spraw, a rodzaje rzeczy CSS nie są numeryczne - wystarczająco wymagający, aby potrzebować więcej precyzji niż to. Połącz to z zaletami bezpośredniej zgodności z JavaScriptem, a masz dość mocną argumentację za podwójnymi.
Nie jest niemożliwe, aby ktoś zaimplementował CSS przy użyciu kodowania o zmiennej długości dla liczb. Jeśli ktoś używał kodowania o zmiennej długości, a następnie porównując wobec małych ilościach byłoby mniej kosztowne niż porównywanie przeciwko dużych ilościach, ponieważ duża liczba ma więcej danych do zapaści . Tego rodzaju kodowanie może być bardziej precyzyjne niż binarne, ale są one również znacznie wolniejsze, a w szczególności w przypadku CSS przyrost precyzji prawdopodobnie nie jest wystarczający, aby być wartym wydajności. Byłbym bardzo zaskoczony, gdy dowiedziałem się, że każda przeglądarka działa w ten sposób.
Teoretycznie istnieje jeden możliwy wyjątek od wszystkiego, co powiedziałem powyżej: porównywanie z zerem jest często szybsze niż porównywanie z innymi liczbami . Nie dzieje się tak dlatego, że zero jest krótkie (gdyby to był powód, to 1 powinno być tak samo szybkie, ale tak nie jest). To dlatego, że zero pozwala oszukiwać. Jest to jedyna liczba, w której wszystkie bity są wyłączone, więc jeśli wiesz, że jedna z wartości wynosi zero, nie musisz nawet patrzeć na drugą wartość jako liczbę: jeśli któryś z bitów jest włączony, to nie jest równy zero, a następnie wystarczy spojrzeć na jeden bit, aby zobaczyć, czy jest on większy czy mniejszy od zera.