2012-08-10 87 views
1

我有一个颜色选择器,并且返回的色调值是零到1之间的数字。 要创建色调变化,我为80%等增加了20%,.8等。使用Javascript获取小数点后的数字

我怎能绕了一圈准备的数字,这样,当数必须高于1,它减去1。我怎样才能使这个数字到这个号码: 1.73540012511 ---> 0.7354

我试过使用“仙”javascript,(http://www.irt.org/script/6.htm)但这个返回值大于1: http://jsfiddle.net/Se9Dn/

我不能使用Math.min,因为我想让1.2变成.2(当它们碰到1时,不会让颜色变成红色)。

谢谢。 :)


编辑: 确认溶液中,用舍入溶液。假设你有HSL色彩(色调,饱和度,亮度)从Farbtastic回来,想数学调整色调:

hslcolor = (.73802938, .59832908, .948987); 
colorStep = .2; 
newcolor[0] = Math.round (((1*colorStep +hslcolor[0])%1)*10000) /10000; 

当心那些括号都在那里非常棘手。

+0

如果它大于1,只需要减去1 ... – Pointy 2012-08-10 11:59:35

回答

5

您可以使用模运算符%MDN docu)。因此,用于添加,例如,0.8

result = (result + 0.8) % 1; 

EDIT

的JavaScript的模运算实际上是更余运算符。

引述ECMAScript spec Section 5.2

符号“X模Y”(y必须是有限的,并且非零)计算相同符号的为y(或零),使得ABS(k)的值k <对于某个整数q,abs(y)和x-k = q×y。

+0

否。这将始终返回一个整数余数,这完全不符合要求。 – Pointy 2012-08-10 12:02:08

+0

@Pointy不,它不会。看到[fiddle](http://jsfiddle.net/5gfzm/)。 – Sirko 2012-08-10 12:06:23

+0

哇,你是对的......我不明白这是多么有道理,但正如我刚才注意到的,我今天早上没有喝下一杯咖啡,所以我的大脑部分不工作。 – Pointy 2012-08-10 12:08:17

1

你只是减去整数

function cent(amount) { return (+amount) - Math.floor(+amount); } 

如果数字可以是负数,那么它取决于你想要的语义。我会把它作为一个练习:-)

+0

哈哈没关系,我认为Sirko的答案正在起作用。 – 2012-08-10 12:06:46