Скрипт подглючивает

Sep 11, 2015 17:35

В моей работе мне часто приходится обрабатывать кучи файлов, выполняя кучи операций, все из которых прекрасно шаблонизируются. Кроме одной - округления размера типа 5000,5х1500,5mm в меньшую сторону.
Для этого я написал простенький скрипт:
app.preferences.rulerUnits = Units.MM ( Read more... )

adobe photoshop, help

Leave a comment

Comments 7

taurus_ek September 11 2015, 08:28:57 UTC
М.б., размер только "выглядит" круглым, а на самом деле 1499.99999998? Прибавить сначала 0.0001 мм ?

Reply

chegr September 11 2015, 09:01:13 UTC
А тоже вполне себе костыль :)
В моём случае можно даже побольше.
Потещщу в понедельник, а то не на чем уже.

Reply


timon_timonich September 11 2015, 08:32:50 UTC
Неточные вычисления - известная проблема яваскрипта.

alert( 0.1 + 0.2 > 0.3 ); // true

Почему? А вот почему alert( 0.1 + 0.2 ); // 0.30000000000000004

В вашем случае 1500, скорее всего равно 1499.99999999995 что в при округлении в меньшую сторону даст 1499

Так что app.activeDocument.width.toFixed(2) и вперед. Ну или делайте обычное округдение :)

Reply

chegr September 11 2015, 09:00:19 UTC
Ну вот я так и догадался, правда, грешил больше на неточность перевода единиц (как это в Иллюстраторе, например, из-за чего, собственно, эти дроби изначально и вылазят).
Обычное округление низя, потому что надо именно всегда в меньшую (обычно там либо 0,5 либо 0,33 стоит).
Но почему же toFixed(2), а не (1)?

Reply

timon_timonich September 11 2015, 09:10:56 UTC
Это как пример был, но вы же всё поняли :))

(14.99999999999999999).toFixed(0) - по факту будет как оклугление. Просто тут может быть другая подстава

var price = 6.35;

alert( price.toFixed(1) ); // 6.3
alert( Math.round(price * 10) / 10 ); // 6.4

Я не совсем точно понял, что именно вы хотите, потому объяснил проблему, а вы уже сами допилите )

Reply

chegr September 11 2015, 09:23:53 UTC
Да, я уже проверил в теории, потестил, думаю, смогу решить.
Спасибо! Я просто не секу в JS :) Поскрести по гуглам умею, а мануалы не читал.

Reply


Leave a comment

Up