我有一个应用程序将使用测量值,特别是小至 1/16 英寸。我真的想要一种方便的方式让最终用户输入包含小数部分的值,例如 3 7/16。我意识到我可以要求用户只输入十进制值(即 3.1875),但我真的想要一种更好的方法。有谁知道可以轻松输入的下拉或旋转控件吗? (最好是该控件的数据库版本。)
你可以简单地做
function FractionToFloat(const S: string): real;
var
BarPos: integer;
numStr, denomStr: string;
num, denom: real;
begin
BarPos := Pos('/', S);
if BarPos = 0 then
Exit(StrToFloat(S));
numStr := Trim(Copy(S, 1, BarPos - 1));
denomStr := Trim(Copy(S, BarPos + 1, Length(S)));
num := StrToFloat(numStr);
denom := StrToFloat(denomStr);
result := num/denom;
end;
这将接受以下示例的形式的输入3/7
and -4 / 91.5
.
要允许整数部分,请添加
function FullFractionToFloat(S: string): real;
var
SpPos: integer;
intStr: string;
frStr: string;
int: real;
fr: real;
begin
S := Trim(S);
SpPos := Pos(' ', S);
if SpPos = 0 then
Exit(FractionToFloat(S));
intStr := Trim(Copy(S, 1, SpPos - 1));
frStr := Trim(Copy(S, SpPos + 1, Length(S)));
int := StrToFloat(intStr);
fr := FractionToFloat(frStr);
result := int + fr;
end;
这会此外接受示例形式的输入1 1/2
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)