我正在尝试使用M4宏生成CSS文件。我愿意以px输入我的值,并使用eval()进行简单的数学运算以获得em中的结果。不幸的是,我没有找到如何漂浮的方法。

define(`FONTSIZE', `13')dnl
define(`LINEHEIGHT', `17')dnl
.content {padding : eval(LINEHEIGHT / FONTSIZE)em}
>>> m4 style.css.m4
>>> .content {padding : 1em}


有任何想法吗?

谢谢!

最佳答案

为了您的特定目的,表达式可能会变成类似

eval(LINEHEIGHT/FONTSIZE).substr(eval(((LINEHEIGHT%FONTSIZE)*1000)/FONTSIZE + 1000),1)


(当然,请使用满足您的精度要求的10的幂)
这是从除法中获得类浮点结果的常见技巧。其他运算符更复杂,更不用说像sin,cos,ln ...

通常,原则上可以编写一些使用字符串操作和整数运算符实现的浮点操作宏,但我认为使用“ syscmd()”调用的外部程序(bc,gawk ...)更为实用。操作并不像除法那么简单。

关于css - M4评估精度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5442861/

10-09 19:17