繁体   English   中英

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

[英]Getting numbers after decimal in Javascript

我有一个颜色选择器,返回的色相值是零到1之间的数字。要在色相上创建变化,我为0.2%添加0.2,为80%添加0.8。

如何使数字围绕圆圈旋转,以便当数字大于1时,它会减去1。如何将这个数字变成该数字:1.73540012511 ---> .7354

我尝试使用“ cents” javascript(http://www.irt.org/script/6.htm),但是返回的值大于1: http : //jsfiddle.net/Se9Dn/

我不能使用Math.min,因为我希望1.2变为0.2(不要让颜色在达到1时全部变为红色)。

谢谢。 :)


编辑:确认解决方案,并添加了四舍五入。 假设您从Farbtastic返回了HSL颜色(色相,饱和度,亮度),并希望通过数学方式调整色相:

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

当心那些括号在其中非常棘手。

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

因此添加例如0.8

result = (result + 0.8) % 1;

编辑

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

引用ECMAScript规范5.2节

符号“ x模y”(y必须为有限且非零)可计算与y(或零)具有相同符号的值k,使得abs(k)<abs(y)且x−k = q×y整数q

您只需减去整数:

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

如果数字可以为负,则取决于您想要的语义。 我将其保留为练习:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM