php 格式化數(shù)字的時候注意數(shù)字的范圍
更新時間:2010年04月13日 15:45:43 作者:
因為 數(shù)據(jù)庫中 id 可能會很大 如果使用%d的話,就可能出現(xiàn)因為超出了范圍,而到不到正確的結(jié)果。所以,個人建議 對id進行格式化的時候 使用%.0f 比 %d 要 好的多。
構(gòu)造sql語句是 比起來
$sql = 'SELECT *
FROM sdb_comments
WHERE goods_id = '.intval($goods_id).'
AND for_comment_id IS NULL
AND object_type = ".$item."
AND disabled="false"
AND display = "true"';
我更喜歡這樣做:
$sql = sprintf('SELECT *
FROM sdb_comments
WHERE goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
AND disabled="false"
AND display = "true"', (float)$goods_id, $item);
這個語句還算 簡單,如果是更復(fù)雜的話,用拼接字符串的話,那簡直就是一個噩夢。
使用第二種方式的話,比較方便.但是一個小問題:在格式化數(shù)字的時候就需要注意其取值范圍。數(shù)字操作了取值反問。那么最后返回的sql 也不是我們需要的。
我今天做了個總結(jié):
%d: 2^31~2^31-1(-2147483648~2147483647) (將int轉(zhuǎn)化為有符號十進制)
%b:二進制(將int類型的轉(zhuǎn)化為二進制)
%c:字符(將int類型轉(zhuǎn)化為字符)
%u: 2^32-1(0 ~ 4294967295) (將int轉(zhuǎn)化為有符號十進制)
%f: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 本地化
%F: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 非本地化
%o (將int轉(zhuǎn)化為八進制)
%s:字符串
%x:將int轉(zhuǎn)化為小寫字母的十六進制
%X:將int轉(zhuǎn)化為大寫字母的十六進制
因為 數(shù)據(jù)庫中 id 可能會很大 如果使用%d的話,就可能出現(xiàn)因為超出了范圍,而到不到正確的結(jié)果。所以,個人建議 對id進行格式化的時候 使用%.0f 比 %d 要 好的多。
復(fù)制代碼 代碼如下:
$sql = 'SELECT *
FROM sdb_comments
WHERE goods_id = '.intval($goods_id).'
AND for_comment_id IS NULL
AND object_type = ".$item."
AND disabled="false"
AND display = "true"';
我更喜歡這樣做:
復(fù)制代碼 代碼如下:
$sql = sprintf('SELECT *
FROM sdb_comments
WHERE goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
AND disabled="false"
AND display = "true"', (float)$goods_id, $item);
這個語句還算 簡單,如果是更復(fù)雜的話,用拼接字符串的話,那簡直就是一個噩夢。
使用第二種方式的話,比較方便.但是一個小問題:在格式化數(shù)字的時候就需要注意其取值范圍。數(shù)字操作了取值反問。那么最后返回的sql 也不是我們需要的。
我今天做了個總結(jié):
%d: 2^31~2^31-1(-2147483648~2147483647) (將int轉(zhuǎn)化為有符號十進制)
%b:二進制(將int類型的轉(zhuǎn)化為二進制)
%c:字符(將int類型轉(zhuǎn)化為字符)
%u: 2^32-1(0 ~ 4294967295) (將int轉(zhuǎn)化為有符號十進制)
%f: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 本地化
%F: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 非本地化
%o (將int轉(zhuǎn)化為八進制)
%s:字符串
%x:將int轉(zhuǎn)化為小寫字母的十六進制
%X:將int轉(zhuǎn)化為大寫字母的十六進制
因為 數(shù)據(jù)庫中 id 可能會很大 如果使用%d的話,就可能出現(xiàn)因為超出了范圍,而到不到正確的結(jié)果。所以,個人建議 對id進行格式化的時候 使用%.0f 比 %d 要 好的多。
相關(guān)文章
php操作xml入門之xml基本介紹及xml標(biāo)簽元素
這篇文章主要介紹了php操作xml入門之xml基本介紹及xml標(biāo)簽元素,實例分析了XML的組成、規(guī)范與用法,需要的朋友可以參考下2015-01-01
PHP中設(shè)置時區(qū),記錄日志文件的實現(xiàn)代碼
php中設(shè)置時區(qū) 記錄日志文件的實現(xiàn)代碼,需要的朋友可以參考下2013-01-01
php獲取從百度搜索進入網(wǎng)站的關(guān)鍵詞的詳細代碼
以下是關(guān)于php該如何獲取從百度搜索進入網(wǎng)站的關(guān)鍵詞的詳細代碼,希望本文對廣大php開發(fā)者有所幫助2014-01-01

