Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 将浮点格式设置为####.###(两位小数)_Delphi - Fatal编程技术网

Delphi 将浮点格式设置为####.###(两位小数)

Delphi 将浮点格式设置为####.###(两位小数),delphi,Delphi,具有: 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一起使用)

具有:

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
一起使用)

为什么不将format函数与一起使用?例如:

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; 

只是想知道这是否是一个数学问题,而不是格式问题。你为什么要把物品的数量除以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);

我已经尝试了所有这些解决方案。。示例:sb.panels[2]。文本:=FormatFloat('#,'###0',((List.Items.Count)/difference)/1000);结果总是0。过载版本呢?您有一个使用它的例子吗?也许在您的本地语言中,表示1k分隔符,您应该使用。谢谢你提供的信息,谢谢。我的问题现在解决了。如果数字很低,这个答案会在字符串的开头创建很多空格……如果OP想要显示处理一个列表项所需的时间,它不应该是这样的:“SomeFloat:=0.001*(difference/list.Items.Count);”吗?当然0个项目需要处理之前…是的,我必须划分。EventPerMinute:=List.Items.Count/差异/1000;一些解决方案:sb.panels[2]。Text:=floattostr(eventperminute);//可以,但未格式化sb.面板[2]。文本:=floattostrF(EventPerMinute,ffNumber,4,3);//始终为0 sb.panels[2]。文本:=格式('%f',[eventperminute]);//始终为0 sb.面板[2]。文本:=FormatFloat('#,###0',EventPerMinute);//始终为0------------------此计算基于计时器事件,每1000毫秒触发一次。如果5000毫秒内有10个列表项,则10/5000/1000将产生0.000002-难怪会得到零!即使你按照我的建议做,10/(5000/1000)=2这是每秒事件数,而不是每分钟事件数。对于每分钟,你必须除以60000!我编辑了变量名并添加了源注释行以反映我以前的注释。。。。是我的错。你是对的,我应该除以60000。现在连#########都出现了。感谢MyFormatting类道具。暗示。