在Javascript中获取小数点后的数字

时间:2012-08-10 11:57:24

标签: javascript

我有一个颜色选择器,返回的色调值是0到1之间的数字。 要在色调上创建变体,我添加.2表示20%,。8表示80%等。

如何保持数字围绕圆圈,以便当数字超过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时,颜色都不会变成红色)。

感谢。 :)


修改 确认解决方案,添加了舍入。假设您有从Farbtastic返回的HSL颜色(色调,饱和度,亮度)并想要以数学方式调整Hue:

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

注意那些括号在那里非常棘手。

2 个答案:

答案 0 :(得分:5)

您可以使用模运算符%MDN docu)。

添加,例如0.8

result = (result + 0.8) % 1;

修改

JavaScript的模运算符实际上更像是一个余数运算符。

引用ECMAScript spec Section 5.2

  

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

答案 1 :(得分:1)

你只需减去整数:

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

如果数字可以为负数,那么它取决于您想要的语义。我将把它留作练习: - )