四舍六入五成双的算法

合集下载

四舍六入五留双规则的具体方法

四舍六入五留双规则的具体方法

四舍六入五留双规则的具体方法之杨若古兰创作当尾数小于或等于4时,直接将尾数舍去例如将以下数字全部修约到两位小数,结果为:10.2731——10.2718.5049——18.5016.4005——16.4027.1829——27.18当尾数大于或等于6时将尾数舍去向前一名进位例如将以下数字全部修约到两位小数,结果为:16.7777——16.7810.29501——10.3021.0191——21.02(三)当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一名:若前一名数字此时为奇数,就应向前进一名;若前一名数字此时为偶数,则应将尾数舍去.数字“0”在此时应被视为偶数.例如将以下数字全部修约到两位小数,结果为:12.6450——12.6418.2750——18.2812.7350——12.7421.845000——21.84(四)当尾数为5,而尾数“5”的后面还有任何不是0的数字时,不管前一名在此时为奇数还是偶数,也不管“5”后面不为0的数字在哪一名上,都应向前进一名.例如将以下数字全部修约到两位小数,结果为:12.73507——12.7421.84502——21.8512.64501——12.6518.27509——18.2838.305000001——38.31按照四舍六入五留双规则进行数字修约时,也应像四舍五入规则那样,一次性修约到指定的位数,不成以进行数次修约,否则得到的结果也有可能是错误的.例如将数字10.2749945001修约到两位小数时,应一步到位:10.2749945001——10.27(准确).如果按照四舍六入五留双规则分步修约将得到错误结果:10.2749945001——10.274995——10.275——10.28(错误).。

四舍六入五单进规则

四舍六入五单进规则

数值修约规则四舍六入五留双规则四舍六入五留双规则的具体方法是:(一)当尾数小于或等于4时,直接将尾数舍去。

例如将下列数字全部修约为四位有效数字,结果为:0.53664—0.5366 10.2731—10.2718.5049—18.50 0.58344—0.583416.4005—16.40 27.1829—27.18(二)当尾数大于或等于6时,将尾数舍去并向前一位进位。

例如将下列数字全部修约为四位有效数字,结果为:0.53666—0.5367 8.3176—8.31816.7777—16.78 0.58387—0.583910.29501—10.30 21.0191—21.02(三)当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,则应将尾数舍去。

数字“0”在此时应被视为偶数。

例如将下列数字全部修约为四位有效数字,结果为:0.153050—0.1530 12.6450—12.6418.2750—18.28 0.153750—0.153812.7350—12.74 21.845000—21.84(四)当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位。

例如将下列数字全部修约为四位有效数字,结果为:0.326552—0.3266 12.73507—12.7421.84502—21.85 12.64501—12.6518.27509—18.28 38.305000001—38.31按照四舍六入五留双规则进行数字修约时,也应像四舍五入规则那样,一次性修约到指定的位数,不可以进行数次修约,否则得到的结果也有可能是错误的。

例如将数字10.2749945001修约为四位有效数字时,应一步到位:10.2749945001—10.27(正确)。

如果按照四舍六入五留双规则分步修约将得到错误结果:10.2749945001—10.274995—10.275—10.28(错误)。

四舍六入五成双

四舍六入五成双

四舍六入五成双
四舍六入五成双
近日一个偶然的机会看到Javascript的Round函数的一些问题,发现它计算有效数字用的不是四舍五入原则,而是四舍六入五成双原则。

后来到网上查了才知道欧洲的金融业基本都是使用这个原则的,我们国家的科学界也推荐了这个原则,但是没能流行开来,据说这个原则能在大数据量计算中减少误差。

我国科学技术委员会正式颁布的《数字修约规则》,通常称为“四舍六入五成双”法则。

四舍六入五考虑,即当尾数≤4时舍去,尾数为6时进位。

当尾数4舍为5时,则应是末位数是奇数还是偶数,5前为偶数应将5舍去,5前为奇数应将5进位。

这一法则的具体运用如下:
A. 将28.175和28.165处理成4位有效数字,则分别为28.18和28.16。

B. 若被舍弃的第一位数字大于5,则其前一位数字加1,例如
28.2645处理成3为有效数字时,其被舍去的第一位数字为6,大于5,则有效数字应为28.3。

C. 若被舍其的第一位数字等于5,而其后数字全部为零时,则是被保留末位数字为奇数或偶数(零视为偶),而定进或舍,末位数是奇数时进1,末位数为偶数时还进1,例如28.350、28.250、
28.050处理成3位有效数字时,分别为28.4、28.2、28.0。

D. 若被舍弃的第一位数字为5,而其后的数字并非全部为零时,则进1,例如28.2501,只取3位有效数字时,成为28.3。

E. 若被舍弃的数字包括几位数字时,不得对该数字进行连续修约,而应根据以上各条作一次处理。

如2.154546 ,只取3位有效数字时,应为 2.15,二不得按下法连续修约为 2.16:2.154546→2.15455→2.1546→2.155→2.16。

四舍六入五成双是什么意思

四舍六入五成双是什么意思

四舍六入五成双是什么意思四舍六入五成双是什么意思?其实“四舍”和“六入”都只是一种取数方法,不能单独使用。

四舍就是把要舍去的数从左边向右数第三位数,除以二;再按照余数从小到大的顺序,从高位舍到低位。

而“六入”则是把要入的数字先按照除数的小,依次递增,然后将商四舍;最后余下的数按照得数的高位数的数字来入位。

举几个简单的例子:四舍六入五成双有哪些常用口诀?这句话一般在计算四舍五入时使用。

在计算“十万八千”之类的大数目时,一定要记住这条口诀,因为“万”在它前面添加一个零或者一个数字,要得到原数目的千分之一,都是不容易的事情。

还有就是在需要求出百分率时也会用到。

比如说,20%要化作0.2;80%就变成了0.8等。

在我们的生活中,尤其是做财务工作的人员更应该牢牢地掌握好这个口诀。

那么这里就存在着一个问题了,如果在计算“0.02”时,结果却是零点几呢?要知道,百分号前面的零越多,所表示的精确程度就越高,假设你输入的结果是0.2,那么0.12(即10的12次方)就是正确答案了。

反过来说,要想输入0.03,恐怕就没那么幸运了!很明显,输入零点几,关键就在于“0.02”两字,理解了“四舍”与“六入”,也就明白了为何需要用到“五成双”了。

比如说,我们的手机号码在一串中必须对齐,但又难免有几个不同的相邻号码,若干年以后有人询问此号码值多少钱,根据他的指引我们便可以轻松找到自己当初购买的价格,而且不管是谁来查询都是一样的结果。

现在,很多公司采用最新的“智能卡手机销售模式”,顾客持卡来电时,由系统检测手机号码,并在网络中搜索到对应的手机号,在拨通电话后根据输入的号码将联系信息传送至数据库中,形成了“四舍”、“五入”、“六成双”的规律。

以上两个例子可以看出,平时常见的非整数的大额支付账户的金额记录,经常利用到四舍五入技术,在银行业特别盛行,甚至已被写进专门教材。

虽然,我国目前已发行的支票不能再修改起始数字了,但是在日常生活中仍广泛使用着。

四舍六入五成双的计算方法

四舍六入五成双的计算方法

四舍六入五成双的计算方法
宝子,今天咱来唠唠这个“四舍六入五成双”的计算方法。

你看啊,平常咱们老说四舍五入,这个“四舍六入五成双”可有点不一样的小脾气呢。

先说这个“四舍”,就和咱们平常的四舍五入里的四舍差不多啦。

要是一个数要保留到某一位,这一位后面的数字小于等于4呢,那就直接舍掉。

比如说3.42,要保留到整数位,后面的0.42里4是小于5的,那就舍掉,结果就是3啦。

再讲讲“六入”。

要是这一位后面的数字大于等于6呢,就往前进一位。

就像3.61,保留到整数位,0.61里6大于5,那就进一位,结果就是4喽。

最有趣的就是这个“五成双”啦。

如果这一位后面的数字是5,就不是简单的进一位了哦。

如果这个5后面没有其他数字了,或者说5后面的数字都是0,那就要看前面的数字是奇数还是偶数。

要是前面的数字是奇数呢,就进一位让它变成偶数;要是前面的数字是偶数,那就直接舍掉这个5。

比如说2.5,保留到整数位,2是偶数,那就舍掉0.5,结果就是2;要是3.5,3是奇数,那就进一位,结果就是4。

这个计算方法在一些比较精确的统计或者科学计算里可有用了呢。

它能让数据的处理更加合理,减少一些因为简单四舍五入带来的小偏差。

宝子,你可别小瞧它,虽然感觉有点复杂,但是一旦你掌握了,就会觉得还挺好玩的呢。

它就像是一个有点小个性的朋友,有自己独特的规则。

不像普通的四舍五入那么直白,但是却更加细腻地处理数字。

下次你要是遇到需要精确处理数字的时候,不妨试试这个“四舍六入五成双”的方法呀。

数字修约规则-----四舍五入和四舍六入五留双规则

数字修约规则-----四舍五入和四舍六入五留双规则

数字修约规矩如今被普遍应用的数字修约规矩重要有四舍五入规矩和四舍六入五留双规矩.[编辑] 四舍五入规矩四舍五入规矩是人们习惯采取的一种数字修约规矩.四舍五入规矩的具体应用办法是:在须要保存有用数字的位次后一位,逢五就进,逢四就舍.千分位(小数点后第三位),因小数点后第四位数字为5,按照此规矩应向前一位进一,所以成果为2.188.同理,将下列数字全体修约为四位有用数字,成果为:2按照四舍五入规矩进行数字修约时,应一次修约到指定的位数,不成以进行数次修约,不然将有可能得到错误的成果.例如将数字15.4565修约为两位有用数字时,应一步到位:15.4565——15(准确).假如分步修约将得到错误的成果:15.4565——15.457——15.46——15.5——16(错误).四舍五入修约规矩,逢五就进,必定会造成成果的体系偏高,误差偏大,为了防止如许的状态消失,尽量减小因修约而产生的误差,在某些时刻须要应用四舍六入五留双的修约规矩.[编辑] 四舍六入五留双规矩为了防止四舍五入规矩造成的成果偏高,误差偏大的现象消失,一般采取四舍六入五留双规矩(Banker's Rounding). 四舍六入五留双应当改为: 四舍六入逢五无后则留双,如许描写更轻易懂得和记住.四舍六入五留双规矩的具体办法是:(一)当尾数小于或等于4时,直接将尾数舍去.例如将下列数字全体修约为四位有用数字,成果为:(二)当尾数大于或等于6时,将尾数舍去并向前一位进位.例如将下列数字全体修约为四位有用数字,成果为:(三)当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向进步一位;若前一位数字此时为偶数,则应将尾数舍去.数字“0”在此时应被视为偶数.例如将下列数字全体修约为四位有用数字,成果为:(四)当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数照样偶数,也无论“5”后面不为0的数字在哪一位上,都应向进步一位.例如将下列数字全体修约为四位有用数字,成果为:3按照四舍六入五留双规矩进行数字修约时,也应像四舍五入规矩那样,一次性修约到指定的位数,不成以进行数次修约,不然得到的成果也有可能是错误的.例如将数字10.2749945001修约为四位有用数字时,应一步到位:10.2749945001——10.27(准确).假如按照四舍六入五留双规矩分步修约将得到错误成果:——————(错误).。

四舍六入五留双规则的具体方法

四舍六入五留双规则的具体方法
例如将下列数字全部修约到两位小数,结果为:
12.73507——12.74
21.84502——21.85
12.64501——12.65
18.27509——18.28
38.305000001——38.31
依照四舍六入五留双规则进行数字修约时,也应像四舍五入规则那样,一次性修约到指定的位数,不成以进行数次修约,不然得到的结果也有可能是错误的.例如将数字10.2749945001修约到两位小数时,应一步到位:10.2749945001——10.27(正确).如果依照四舍六入五留双规则分步修约将得到错误结果:10.2749945001——10.274995——10.275——10.28(错误).
例如将下列数字全部修约到两位小数,结果为:
16.7777——16.78
10.29501——10.30
21.0191——21.02
(三)当尾数为5,而尾数后面的数字均为0时,应看尾数“5”的前一位:若前一位数字此时为奇数,就应向前进一位;若前一位数字此时为偶数,则应将尾数舍去.数字“0”在此时应被视为偶数.
例如将下列数字全部修约到两位小数,结果为:
12.6450——12.64
18.2750——18.28
12.7350——12.74
21.845000——21.84
(四)当尾数为5,而尾数“5”的后面还有任何不是0的数字时,无论前一位在此时为奇数还是偶数,也无论“5”后面不为0的数字在哪一位上,都应向前进一位.
时间:二O二一年七月二十九日
四舍六入五留双规则的具体办法之邯郸勺丸创作
时间:二O二一年七月二十九日
当尾数小于或等于4时,直接将尾数舍去
例如将下列数字全部修约到两位小数,结果为:
10.2731——10.27

四舍六入五成双的规则

四舍六入五成双的规则

四舍六入五成双的规则四舍六入五成双是一种数学中的取舍规则,适用于对小数进行取舍时的一种常用方法。

根据这种规则,当小数部分的第一位小于5时,直接舍弃后面的小数位;当小数部分的第一位大于5时,直接进位,舍弃后面的小数位;当小数部分的第一位等于5时,如果5后面还有非零数,则进位;如果5后面没有非零数,则根据5前面的数字的奇偶性来决定进位或舍弃。

如果5前面的数字是奇数,则进位;如果5前面的数字是偶数,则舍弃。

这种取舍规则常被应用于统计学、金融学、工程学等领域。

它的目的是通过对数字进行适当的取舍,减小舍入误差,并提高计算结果的准确性。

举个例子来说明四舍六入五成双的规则:假设要将12.567精确到百位,根据四舍六入五成双的规则,我们需要观察小数点后第二位数字,即“6”。

根据该规则,因为6大于5,所以进位,得到结果12.600。

再举一个例子:假设要将8.585精确到个位,根据四舍六入五成双的规则,我们需要观察小数点后第二位数字,即“5”。

根据该规则,因为5后面没有非零数,并且5前面的数字8是个偶数,所以舍弃,得到结果8这种取舍方法的好处是避免了舍入误差的积累,能够在一定程度上提高计算结果的准确性。

但是需要注意的是,这个规则并不是适用于所有情况的。

在特殊的情况下,还需要考虑具体的场景和要求,选择合适的取舍方式。

四舍六入五成双的规则在实际应用中也有一些争议。

有些人认为这种规则有时可能会引入不必要的误差,并且在一些场景下可能会导致结果的偏差。

因此,在具体应用中,还需要根据实际情况进行判断和权衡,选择合适的取舍方式。

总之,四舍六入五成双是一种常用的取舍规则,适用于对小数进行取舍的情况。

通过这种规则,可以在一定程度上提高计算结果的准确性。

但需要注意的是,在实际应用中,还需要根据具体的场景和要求,选择合适的取舍方式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

huangjing81 油果子 等级: 结帖率:100%楼主 发表于: 2007-07-11 10:39:51哪位大侠能帮我写一个四舍六入五成双的算法,最好是封装成函数,小弟在此感激不尽!!!zjcxc 邹建 等级:结帖率:100%2 2 更多勋章回复于: 2007-07-11 10:46:00chuifengde 树上的鸟儿 等级: 结帖率:100%2007-07-11 10:47:14friendliu 无为 等级: 结帖率:100%#3 得分:1 回复于: 2007-07-11 10:57:31四舍六入五成双的算法:四舍六入五考虑,即当尾数≤4时舍去,尾数为6时进位。

当尾数4舍为5时,则应是末位数是奇数还是偶数,5前为偶数应将5舍去,5前为奇数应将5进位tufun * * 等级: 结帖率:96.1%#4 得分:1 回复于: 2007-07-11 11:00:53是变成偶数吗把数除2,然后四舍五入,再乘2huangjing81 油果子等级: 结帖率:100%原 结果1.444 1.441.446 1.45以下为有效位数后一位为5的情况1.445 1.441.435 1.441.425 1.421.635 1.64如果有效位数后一位是5,则看有效位数最后一位是奇数还是偶数,如果是偶数,则舍弃,如果是奇数,则进位,跟四舍五入有这样一点区别hellowork 一两清风 等级:结帖率:100%3#7 得分:39 回复于: 2007-07-11 11:55:57if object_id('fnRound') is not null drop function fnRound GO create function fnRound(@num float,@i int)returns varchar(20)asbegindeclare @str varchar(20) /*转换成字符类型*/declare @str2 varchar(20) /*小数位数后面的字符串*/declare @str3 varchar(2) /*小数位数字符串*/set @str = convert(varchar,@num)set @str2 = reverse(substring(reverse(@str),1,charindex('.',reverse(@str)) - 1 - @i))set @str3 = substring(@str,charindex('.',@str) + 1,@i)if @str2%5 = 0 and @str3%2 = 0 /*如果符合"五成双"*/set @str = substring(@str,1,charindex('.',@str) + @i)else /*否则四舍五入*/set @str = convert(varchar,round(@num,@i))RETURN @strendGO----测试declare @num float,@num2 float,@num3 float,@num4 float,@i intselect @num = 1.45000,@num2 = 1.3500,@num3 = 1.4501,@num4 = 1.4600set @i = 1SELECTdbo.fnRound(@num,@i) as [1.4500], /*五成双(4已经是偶数保持不变)*/ dbo.fnRound(@num2,@i) as [1.3500], /*五成双(将3变成偶数4)*/dbo.fnRound(@num3,@i) as [1.4501], /*四舍五入*/dbo.fnRound(@num4,@i) as [1.4600] /*四舍五入*/----清除测试环境 drop function fnRound/*结果 1.45000 1.3500 1.4501 1.4600-------------------- -------------------- -------------------- ------1.4 1.4 1.5 1.5*/hellowork 一两清风 等级:结帖率:100%3#8 得分:0 回复于: 2007-07-11 12:02:03/*使用楼主的测试数据1.445 1.44 1.435 1.44 1.425 1.421.635 1.64*/if object_id('fnRound') is not nulldrop function fnRoundGOcreate function fnRound(@num float,@i int)returns varchar(20)asbegindeclare @str varchar(20) /*转换成字符类型*/declare @str2 varchar(20) /*小数位数后面的字符串*/declare @str3 varchar(2) /*小数位数字符串*/set @str = convert(varchar,@num)set @str2 = reverse(substring(reverse(@str),1,charindex('.',reverse(@str)) - 1 - @i)) set @str3 = substring(@str,charindex('.',@str) + 1,@i)if @str2%5 = 0 and @str3%2 = 0 /*如果符合"五成双"*/set @str = substring(@str,1,charindex('.',@str) + @i)else /*否则四舍五入*/set @str = convert(varchar,round(@num,@i))RETURN @strendGO----测试declare @num float,@num2 float,@num3 float,@num4 float,@i intselect @num = 1.445,@num2 = 1.435,@num3 = 1.425,@num4 = 1.635set @i = 2 /*保留的小数位数*/SELECTdbo.fnRound(@num,@i) as [1.445], /*五成双(4已经是偶数保持不变)*/dbo.fnRound(@num2,@i) as [1.435], /*五成双(将3变成偶数4)*/dbo.fnRound(@num3,@i) as [1.425], /*五成双(2已经是偶数保持不变)*/dbo.fnRound(@num4,@i) as [1.635] /*四舍五入*/----清除测试环境drop function fnRound/*结果 1.445 1.435 1.425 1.635-------------------- -------------------- -------------------- -----1.44 1.44 1.42 1.64*/chuifengde 树上的鸟儿 等级:结帖率:100%#10 得分:1 回复于: 2007-07-11 15:02:40楼上的函数有点小错误:SELECT dbo.fnRound(1.445000,4) as [1.445]hellowork 一两清风 等级:结帖率:100%#11 得分:0 回复于: 2007-07-11 15:29:11多谢楼上的指正,下面的函数修正了上述错误:if object_id('fnRound') is not null drop function fnRound3 GOcreate function fnRound(@num float,@i int)returns varchar(20)asbegindeclare @str varchar(20) /*转换成字符类型*/declare @str2 varchar(20) /*小数位数后面的字符串*/declare @str3 varchar(2) /*小数位数字符串*/set @str = convert(varchar,@num)set @str2 = stuff(@str,1,charindex('.',@str) + @i,'') --【!修正了此行!】set @str3 = substring(@str,charindex('.',@str) + 1,@i)if @str2%5 = 0 and @str3%2 = 0 /*如果符合"五成双"*/set @str = substring(@str,1,charindex('.',@str) + @i)else /*否则四舍五入*/set @str = convert(varchar,round(@num,@i))RETURN @strendGO----测试SELECT dbo.fnRound(1.445000,4) as [1.445]----清除测试环境drop function fnRound/*结果1.445 --------------------1.445*/huangjing81 油果子 等级:结帖率:100%dbo.fnRound(1.44501,2) 结果应等于1.46 dbo.fnRound(1.44500,2) .......... 1.44dbo.fnround(1.43500,2) .......... 1.44dbo.fnRound(1.43501,2) .......... 1.44再次感谢.huangjing81 油果子 等级: 结帖率:100%dbo.fnRound(1.2,2) ......... 1.20hellowork 一两清风等级:结帖率:100%3dbo.fnRound(1.44501,2) 结果应等于1.46--------------------------------------------------------------------------------这个应该等于1.45,怎么会是1.46呢?1.44501的2位有效位数后面的数值等于501,不是5的整数倍,所以不符合五成双的要求,因此按四舍五入处理,结果为1.45. 楼主认为的1.46是如何计算的?huangjing81油果子等级:结帖率:100% 2007-07-11 21:18:55五成双的原则是有效位后面的数刚好等于5的时候才适用,其他情况全适用四舍五入的原则,并不是只要是5的整数倍就适用即a.bcdef... 如果取2位有效数字,刚看def...一、当d刚好等于5并且ef...都等于0的时候,此时判断c是偶数还是奇数,如果是奇数则入,如果是偶数则舍二、其他情况一律四舍五入hellowork#16得分:0 回复于:2007-07-11 23:26:13一两清风 等级: 结帖率:100% 3 还是不明白楼主的1.44501保留2位小数后怎么得到1.46的.下面是针对楼主提出的:1.五成双的原则是有效位后面的数刚好等于5的时候才适用,其他情况全适用四舍五入的原则,并不是只要是5的整数倍就适用;2.小数数位不足时,应当用0补齐if object_id('fnRound') is not nulldrop function fnRoundGOcreate function fnRound(@num float,@i int)returns varchar(20)asbegindeclare @str varchar(20) /*转换成字符类型*/declare @str2 varchar(20) /*有效数字后面的字符串*/declare @str3 varchar(2) /*有效数字字符串*/set @str = convert(varchar,@num) --+ replicate('0',5) --【!修正了此行!】set @str2 = stuff(@str,1,charindex('.',@str) + @i,'')set @str3 = substring(@str,charindex('.',@str) + 1,@i)if patindex('%[^05]%',@str) = 0 and @str3%2 = 0 /*如果符合"五成双"*/set @str = substring(@str,1,charindex('.',@str) + @i)else /*否则四舍五入*/set @str = convert(varchar,round(@num,@i))RETURN @str + replicate('0',@i - len(@str3))endGO----测试SELECTdbo.fnRound(1.44500,2), /*结果等于1.45*/dbo.fnRound(1.44501,2), /*结果等于1.45*/dbo.fnRound(1.44505,2), /*结果等于1.45*/ dbo.fnRound(1.43500,2), /*结果等于1.44*/dbo.fnRound(1.43501,2), /*结果等于1.44*/dbo.fnRound(1.41505,2), /*结果等于1.42*/dbo.fnRound(1.4,5) /*用0补齐有效数字位数,1.40000*/yjlhch 爱拼才会赢 等级: 结帖率:97.67%1 回复于: 2007-07-12 08:24:38woshichenduan 该用户很懒,没设置昵称 等级:结帖率:91.67%#19 得分:1 回复于: 2007-07-12 08:58:53请问,hellowork 那个函数怎么编译通不过呀?create function fnRound(@num float,@i int) returns varchar(20) asbegindeclare @str varchar(20) /*转换成字符类型*/declare @str2 varchar(20) /*有效数字后面的字符串*/declare @str3 varchar(2) /*有效数字字符串*/ set @str = convert(varchar,@num) --+ replicate('0',5) --【!修正了此行!】set @str2 = stuff(@str,1,charindex('.',@str) + @i,'') set @str3 = substring(@str,charindex('.',@str) + 1,@i)if patindex('%[^05]%',@str) = 0 and @str3%2 = 0 /*如果符合"五成双"*/ set @str = substring(@str,1,charindex('.',@str) + @i)else /*否则四舍五入*/set @str = convert(varchar,round(@num,@i)) RETURN @str + replicate('0',@i - len(@str3))endhellowork 一两清风 等级:结帖率:100%3#21 得分:0 回复于: 2007-07-12 09:20:53woshichenduan() ( ) 信誉:100 Blog 加为好友 2007-07-12 08:58:53 得分: 0 请问,hellowork 那个函数怎么编译通不过呀?------------------------------------------------------------------------错误提示是什么?woshichenduan 该用户很懒,等级:结帖率:91.67% Error: PLS-00103: 出现符号 "@"在需要下列之一时:<an identifier> <a double-quoted delimited-identifier> currentLine: 1Text: create or replace function fnRound(@num float,@i int)woshichenduan 该用户很懒,等级:结帖率:91.67%2007-07-12 14:48:59hellowork一两清风 等级:结帖率:100%3woshichenduan 该用户很懒,等级: 结帖率:91.67%huangjing81 油果子 等级: 结帖率:100%#27 得分:0 回复于: 2007-07-12 19:10:02多谢各位捧场,再次感谢hellowork 。

相关文档
最新文档