拥有:
var
Difference: DWORD // difference shows in milliseconds
// List.Items.Count can be any 0 to ########
[...]
sb.panels[2].Text := FloatToStr((((List.Items.Count) / difference) / 1000));
我想将结果文本格式化为任何###.##
(两位小数)。使用FloatToStrF
并不成功(似乎无法使用DWORD
)。
答案 0 :(得分:9)
为什么不在format strings使用格式化功能?示例:
sb.panels[2].Text := Format('%8.2f',[123.456]);
其他功能将是
function FormatFloat(const Format: string; Value: Extended): string; overload;
function FormatFloat(const Format: string; Value: Extended; const FormatSettings: TFormatSettings): string; overload;
答案 1 :(得分:5)
只是想知道这是数学而不是格式化的问题。为什么要将项目数除以1000?你的意思是将毫秒(你的差异变量)除以1000吗?也许这就是你想要的:
EventRate := (List.Items.Count) / (difference / 1000); // events per second; to make it per minute, need to change 1000 to 60000
当然,您仍然希望格式化结果。您需要将其作为变量或类属性:
MyFormatSettings: TFormatSettings;
然后,你需要做一次,例如在FormShow
:
getlocaleformatsettings(locale_system_default, MyFormatSettings);
最后,这应该有效:
sb.panels[2].Text := format('%5.2f', EventRate, MyFormatSettings);