您如何计算从2个int值到一个表示一个百分比的int值的百分比(千位,以获得更高的准确性)?
背景/用途:使用没有FPU的处理器,浮点计算的时间要长100倍。
int x = 25;
int y = 75;
int resultPercentage; // desire is 250 which would mean 25.0 percent
resultPercentage = (x/(x+y))*1000; // used 1000 instead of 100 for accuracy
printf("Result= ");
printf(resultPercentage);
Run Code Online (Sandbox Code Playgroud)
输出:
结果= 0
当我真正需要的是250时,并且不能使用任何浮点计算。
正常的fpu计算示例:
int x = 25;
int y = 75;
int resultPercentage; // desire is 250 which would mean 25.0 percent
resultPercentage = (int)( ( ((double)x)/(double(x+y)) ) *1000); //Uses FPU slow
printf("Result= ");
printf(resultPercentage);
Run Code Online (Sandbox Code Playgroud)
输出:
结果= 250
但是输出是以使用浮点计算为代价的。
我有两个编译器,一个识别uint8_t(GCC ARM-EABI),另一个不识别(瑞萨M16标准工具链).
瑞萨工具链不符合ANSI C标准,因此您可以抛弃.因此uint8_t,uint16_t,...未定义为现有类型.
为了保持可移植性,我希望有相同的类型(最好是uint8_t,因为int的含糊不清).
我的平台也是不同大小的处理器(ARM是32位,瑞萨是16位).导致int成为不同的值.
有没有办法检查uint8_t是否作为一种类型存在?
如果没有,请将它(以及其他uint16_t,uint32_t,...)声明为一种类型?
我正在尝试在Zed Graph线上更改Dashes的长度.我希望实线之间有更大的间隙.
我的代码示例
LineItem LineCurve = null
LineCurve = ZedGraphControl.GraphPane.AddCurve("line1",PairPointListData, Color, Symbol);
//now I want to change the dash settings
LineCurve.Line.Style = System.Drawing.Drawing2D.DashStyle.Dash;
LineCurve.Line.StepType = StepType.ForwardStep;
LineCurve.Line.DashOn = 1.0f;//Not sure what this floating point does
LineCurve.Line.DashOff = 1.0f;//Also not sure
Run Code Online (Sandbox Code Playgroud)
我已经改变了Dash On和Off的值,但我看不到任何明显的值.提前感谢任何建议/想法