asp取整函式int奇怪的問題,ASP 取整函式

2022-10-17 06:40:24 字數 5793 閱讀 9371

1樓:陽光上的橋

微軟有病,你知道下面的程式結果是什麼嗎?

int: <%=int(23*268)%>int: <%=int(2.3*2680)%>int: <%=int(0.23*26800)%>輸出結果是:

int: 6164

int: 6163

int: 6164

為什麼2.3*2680進行int取整會被吃一個?

這裡提出一個問題,使用int、fix對表示式計算結果進行取整,可能會出現你意料之外的問題,因為計算機內部對小數的表示是使用的定點的科學記數法,比如2.3*2680的計算結果可能是6.1639999e+0003,也就是6163.

99999,這時候使用int進行取整可能會出錯,穩妥的取整方式是先四捨五入到小數點後面一位,然後再取整,方法如下:

int: <%=int(round(2.3*2680*10)/10)%>

乘以10進行四捨五入之後再除以10,表示四捨五入代小數點後面一位,然後再int或者fix取整,這樣就不會出現問題了。

2樓:0乙丁

下表是三個函式取值的對比:

x int(x) cint(x) fix(x)3.26 3 3 3

3.76 3 4 3

-3.26 -4 -3 -3

-3.76 -4 -4 -3

另外也可以試一下:round()函式

3樓:溜鬚拍馬關雲長

用cint

原因:由於資料型別不同,2.3*2680與23*268只是近似相等

4樓:斛孤俎光熙

你是取整數,它就忽略了小數點後面的資料啊!你要的是四捨五入功能吧!用formatnumber函式吧,我記得這個是四捨五入的。

<%=formatnumber(2.3*2680,0)%>好像是這樣寫的,不太記得了,你再看看!

asp 取整函式

5樓:匿名使用者

取 整 函 數

大家都知道在basic語言中,系統為我們提供了許多標準函式,而「取整函式」就是其中一個非常重要的函式。

一、 「取整函式」的格式和功能。

1、格式:int(x)

2、功能:取不大於x的最大整數

3、說明:其中int為函式名,不允許改變,x為自變數,其形式多種多樣,可以是數值常量、數值變數、數值表示式。

例如:int(3.1416)=3

int(3.8752)=3

int(-3.14)=-4

int(-3.85)=-4

從上面的題目來看,我們可以看出,對於有小數部分的正數,int

取整這後把小數部分舍掉,但不進行四捨五入,對於有小數的負數來說,int取整後並不是直接舍掉小數,而是取比其整部分小1的整數。當然了,對於真正整數來說,int之後其值不變。

二、「取整函式」的應用

1、對數值進行四捨五入運算

(1)對x值保留整數部分,小數部分四捨五入。

表示式為:int(x*100+0.5)

例如:int(3.1416+0.5)=int(3.6416)=3

int(3.8572+0.5)=int(4.3572)=4

int(-3.14+0.5)=int(-2.64)=-3

int(-3.85+0.5)=int(-3.35)=-4

通過分析上面的例子我們可能看出,用int取整函式達到四捨五入的功能,關鍵大在於這個0.5,咱們從數軸來看,對一個數加上0.5,相當於對其值向右移動0.

5,根據小數點後第一位是小於5還是大於等於5,決定了此數在向右移動過程中是否經過了一個整數,因為int函式取值為其左側的最大整數,若經過了一個整數,則結果就為這個整數,否則就和原數直接int取整結果相同。這樣就可能達到四捨五入的目的了。

(2)對x的值保留兩位小數, 對第三位小數四捨五入

表示式:int(x*100+0.5)/100

例如:int(3.1416*100+0.5)/100

=int(314.16+0.5)/100

=int(314.66)/100

=314*100

=3.14

int(3.8572*100+0.5)/100

=int(385.72+0.5)/100

=int(386.22)/100

=386/100

=3.86

這種四捨五入保留與上面1的保留只相差在小數點位置不同,我們只要想辦法改變小數點的位置就可以了,所以我們採用的方法是先對x擴大100倍,然後再按第一種方法進行取捨小數,最後再縮小100倍,這樣既可以不影響數的基本大小,又可以對其進行四捨五入。

小結1對x值保留n位小數,第n+1位小數四捨五入的一般表示式為:

int(x*10^n+0.5)/x*10^n

2、判數一個數m能否被數n整除

例如:判斷一個數的奇偶性,即是否能被2整除

m=25 m=24

m/2=12.5 m/2=12

int(m/2)=12 int(m/2)

通過上述表示式很容易得出結論:25為奇數,25/2<>int(25/2),24為偶數,24/2=int(24/2),int函式可以達到舍掉小數部分的功能,對一個數m來說,只有當m能被2整除的情況下,m/2才能等於int(m/2),所以本題表示式可以寫成:

當m/2 <>int(m/2)時,m為奇數

當m/2=int(m/2)時,m為偶數

小結2數m能被數n整除: m/n=int(m/n)

數m不能數n整除: m/n<>int(m/n)

三、 cint(x)、fix(x)的區別

三、cint(x)對x小數部分四捨五入,然後取整。

fix(x)截去小數部分取整

下表是三個函式取值的對比:

x int(x) cint(x) fix(x)

3.26 3 3 3

3.76 3 4 3

-3.26 -4 -3 -3

-3.76 -4 -4 -3 :

小結3當x>=0時,int(x)的值與其相同,

當x<0時int(x)的值總小1;

cint(x)是對x的小數部分四捨五入取整,其功能與int(x+0.5)相同

6樓:匿名使用者

function ceil(value)

dim return

return = int(value)

cei2=value-return

if cei2>0 then

ceil = return + 1

else

ceil=value+0'就是ceil=value多一個+0 強調返回值為數字型

end if

end function

我自己寫的 你測測 不行改下

asp 十位函式取整應該怎麼寫這個表示式

7樓:鴨騎鹿背

<%i=123456

j=i/10

k=round(j)

l=k*10

response.write(""&l&"")%>

asp 取整函式int 奇怪的問題

8樓:匿名使用者

你是取整數,它就忽略了小數點後面的資料啊!你要的是四捨五入功能吧!用formatnumber函式吧,我記得這個是四捨五入的。

<%=formatnumber(2.3*2680,0)%>好像是這樣寫的,不太記得了,你再看看!

9樓:匿名使用者

用math.ceiling()

該函式返回大於等於指定浮點數的最小整數

10樓:0乙丁

一. 四捨五入的函式是: round() 用法示例:

dim myvar, pi

pi = 3.14159

myvar = round(pi, 2) 'myvar 等於 3.14。

二. 四捨五入的函式還有一個 cint(), 嚴格說它是個型別轉換函式. 與 round() 不同, 它總是把小數四捨五入到最近的一個偶數. 如:

cint(0.5) = 0

cint(1.5) = 2

三. 另外還有其他取整函式, 主要是: fix, int, ceil.

fix 和 int 都是直接刪除小數部分取整的, 它們的區別在於負數, 舉例:

int(99.8) = 99

fix(99.8) = 99

int(-99.8) = -100

fix(-99.8) = -99

11樓:匿名使用者

你用round試試,這個是四捨五入的

<%=round(2.3*2680,0)%>

asp數字取整的問題?

12樓:畢幻

int()或fix()這兩個函式都可以實現,但在對負數取整時略有不同,如下,

int(-3.3)=-4 fix(-3.3)=-3

13樓:條件魚蟲

int(-3.2)=4

int(3.6)=4

fix(3.2)=4

=int()是取整函式,但是它不四捨五入,請問,要四捨五入該如何操作?

14樓:

這個問題用format方法可以輕鬆搞定。

例如format(x,"0.00")   像這樣就可以四捨五入並且保持2位小數。

2. 還有一種簡單的方法就是直接在定義變數是int+0.5,但這樣可能會出現一些小錯誤,所以還是推薦第一種方法。

3.利用math類中的round方法,舉個例子:

public static void main(string args) {

system.out.println("12.5的四捨五入值:" + math.round(12.5));

system.out.println("-12.5的四捨五入值:" + math.round(-12.5));

output:

12.5的四捨五入值:13

-12.5的四捨五入值:-12

15樓:告煦賀皓

比如說吧:精確到0.1,採用四捨六入,公式如下:

=if(even(a1*10)-a1*10=1.5,a1*10-0.5,round(a1*10,0))/10

16樓:匿名使用者

用int 的話 就 int(數字+0.5)

用format也可以輕鬆搞定。

format(a,"0.00") 這樣就四捨五入保持2位小數。

用 round() 則

debug.print round(200.5) 'return 200

debug.print round(200.56) 'return 201

debug.print round(200.56, 1) 'return 200.6

debug.print round(200.56, 2) 'return 200.56

返回一個數值,該數值是按照指定的小數位數進行四捨五入運算的結果。

語法round(expression [,numdecimalplaces])

round函式語法有如下幾部分:

部分 描述

expression 必需的。要進行四捨五入運算的數值表示式。

numdecimalplaces 可選的。數字值,表示進行四捨五入運算時,小數點右邊應保留的位數。如果忽略,則round函式返回整數。

類似int函式的向上取整函式,類似INT函式的向上取整函式

1.你的理解是對的。2.int x 不一定是向下取整,int 1.5 1,但是 1.5 應該等於 2,這才叫向下取整。3.int a1 1 這種形式是不對的。4.很多語言裡都有向下取整函式floor 和向上取整函式ceil 如果是c語言的話要注意型別轉換,一下是函式原型 include double...

SQL AVG函式取整問題

什麼資料庫?mssql update a set b cast 1.522 as int 小數會全部舍掉,四捨五入的話就用roundupdate a set b round 1.522,0 oracle中的語bai句 du 還有一zhi個連結,您可 dao以參考專一屬下 http zhidao.方法...

關於C 取整,C語言有哪些取整函式?

你說的好複雜啊。聽不懂。float 和int指的是儲存資料的方式。不是定義資料 float是分為兩個部分,一個部分用來數字,一個部門用來記小數點的位置 也就是科學計數法的一種。int沒有記小數點的部分,所以只能記整數。float b 11 就是數字為11,小數點的位置是第二個數字之後。a b 4 由...