函数pibar(名称,精确,pos,数字)%pibar%使用:pibar%pibar(name)%pibar(名称,精确)%pibar(名称,精确,[x,y,w,h]%pibar(名称,精确,[x,y,w,h],数字)%%默认值:Pibar('PI',4 * atan(1),[。4 .5 .4 .05],10)%例子:帕马尔('Golden',(1 + SQRT(5))/ 2)%紫皮('100/81',100/81)%博客:谷歌“博客帕马尔”。%Coftright 2020 Clyver Cler%Coftright 2020 MathWorks,Inc。警告('Off','Matlab:Dispatcher:NameConflict')CLF如果nargin <1名称='pi';如果nargin <2精确= 4 * atan(1)结束;如果nargin <3 pos = [.4 .5 .4 .05]结束;如果nargin <4位数= 10;结束UIControl('style','slider',...'单位','正常',...'位置',pos- [0 .05 0 0],...'min',数字,。..'max',数字,...'值',0,...'sliderstep',[0.5 /位0.5 /位],...'标签','pibar',...'userdata',精确,....'回调',@ pibar_callback);txt = Uicontrol('style','text',...'string',spintf(确ch),...'单位','normal',...'位置',pos,...'fontsize',get(greot,'defaultuicontrolfontsize')+ 2,...'Horiz','左');UICONTROL('style','text',...'string','^',...'单位','normal',...'pos',[pos(1)+。47 * pos(3)POS(2) - 。075 .025 .025],...'fontsize',12);警告('ON','Matlab:Dispatcher:NameConflict')%--------------------------------------------------------函数pibar_callback(arg,〜)%扰动精确。 % Logarithmic integer-valued slider. d = round(get(arg,'value')); set(arg,'value',d); s = 10^(digits+1-abs(d)); if d > 0 x = ceil(s*exact)/s; elseif d < 0 x = floor(s*exact)/s; else x = exact; end set(arg,'userdata',x) set(txt,'string',spintf(x)) end function spi = spintf(x) if x == exact spi = sprintf('%s = %17.15f....',name,x); else d = digits+1 - abs(get(findobj('tag','pibar'),'value')); fmt = [name ' = %' num2str(d+2) '.' num2str(d) 'f']; spi = sprintf(fmt,x); end end end function p = pi % pi. The current setting of the pibar. warning('off','MATLAB:dispatcher:nameConflict') p = get(findobj('tag','pibar'),'userdata'); warning('on','MATLAB:dispatcher:nameConflict') end function t = truepi % The double precision floating number closest to Geek letter pi. % The usual value of MATLAB's pi. % See also : pibar. t = 4*atan(1); end