[英]Truncate last X digits of number without division by 10eX
我正在制作一個阻塞算法,但我剛剛意識到,要保持這種精度,將超時添加到這種算法並不容易。
添加超時意味着阻塞算法應該在X ms之后中止(如果不是更早的話)。 現在,我似乎有兩個選擇:
time_elapsed
迭代1(這意味着使用usleep 1e-6秒) time_elapsed
與timeout
。 ( 這是我要談論的問題 ) usleep(1)
timeout
與time_elapsed
這就是困擾我的地方。 timeout
將以毫秒(10e-3)為單位,而usleep
睡眠10e-6秒。 所以我的time_elapsed
將比timeout
精確1000倍。 我想截斷 time_elapsed
后三位數字(等於floor($time_elapsed/1000)
而不進行除法。除法算法太慢。
我想將變量縮小1000倍而不用1000除。我只想擺脫數據。 在二進制中,我將使用移位運算符,但不知道如何將其應用於十進制系統。
有時,當使用SO的人無法回答理論問題時,他們真的渴望代碼。 這里是:
floor($time_elapsed/1000);
我想用更快的速度替換此代碼。 請注意,盡管問題本身充滿了超時,但問題標題僅與截斷該數據有關 。 其他用戶可能會發現該解決方案除計時外還可以用於其他目的。
也許這將有助於Php號碼格式 。 盡管這確實會導致四舍五入,但是如果這不能接受,那么我認為這是不可能的,因為PHP的類型很松散,您無法以特定的精度級別定義數字。
嘗試這個:
(int)($time_elapsed*0.001)
這應該快很多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.