第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么這個(gè)圍棋結(jié)果一樣呢?

為什么這個(gè)圍棋結(jié)果一樣呢?

Go
胡子哥哥 2023-06-01 16:11:12
當(dāng)我審查一個(gè) Golang 項(xiàng)目時(shí),我發(fā)現(xiàn)了一些這樣的代碼, now是 Unix timestap。每秒調(diào)用一次此函數(shù)://main.gofunc PrevSlot(now int64) int64 {    // now = time.Now().Unix()    var blockInterval = int64(10)    result := int64((now-1)/blockInterval) * blockInterval // why result is same ?    plog.Println("PrevSlot:", int64(result), int64((now-1)/blockInterval), now)    return result}func main() {    ticker := time.NewTicker(1 * time.Second)    for {        <-ticker.C        now := time.Now().Unix()        PrevSlot(now)    }}輸出:2019-01-16 10:58:31.668597 I | dpos.go: PrevSlot: 1547607510 154760751 15476075112019-01-16 10:58:32.668649 I | dpos.go: PrevSlot: 1547607510 154760751 15476075122019-01-16 10:58:33.668568 I | dpos.go: PrevSlot: 1547607510 154760751 15476075132019-01-16 10:58:34.668572 I | dpos.go: PrevSlot: 1547607510 154760751 15476075142019-01-16 10:58:35.668547 I | dpos.go: PrevSlot: 1547607510 154760751 1547607515結(jié)果是一樣的。這是為什么,原理是什么?
查看完整描述

2 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

實(shí)際上,

int64((now - 1)/blockInterval * blockInterval

不會(huì)一直返回相同的結(jié)果。您會(huì)注意到它每 10 秒更改一次。

這是由 Go 中的整數(shù)除法引起的。如果對(duì)任意兩個(gè)數(shù)字應(yīng)用整數(shù)除法,則結(jié)果的小數(shù)部分(余數(shù))將被丟棄。例如,int(12 / 10) = 1。在您的特定情況下 - 除以 10,代碼會(huì)將余數(shù)從 1 減到 9,并且只會(huì)在您到達(dá)下一個(gè) 10 時(shí)增加該值。

如果你想提高運(yùn)算的精度,那么你可以像這樣強(qiáng)制進(jìn)行浮點(diǎn)除法float64(12)/float64(10)。


查看完整回答
反對(duì) 回復(fù) 2023-06-01
?
江戶(hù)川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

你的問(wèn)題在這里:


result := int64((now-1)/blockInterval) * blockInterval


time.Now().Unix()以秒為單位返回當(dāng)前 Unix 時(shí)間。因此,對(duì)于連續(xù)迭代,time.Now().Unix()將是:


1257894001

1257894002

1257894003

但是在你的函數(shù)中,你減去 1,然后除以 10,所以上面的每一個(gè)都變成下面的,因?yàn)樾?shù)部分被去掉了。


125789400

125789400

125789400

然后當(dāng)你乘以blockInterval(10)時(shí),它們都變成:


1257894000

1257894000

1257894000

所以,result結(jié)果是一樣的。如果讓它運(yùn)行超過(guò) 10 秒,您會(huì)result在 10 秒后看到變化:


https://play.golang.org/p/LgPtHwjwlC1


查看完整回答
反對(duì) 回復(fù) 2023-06-01
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)