回答

收藏

如何在 Go 中执行除法

技术问答 技术问答 265 人阅读 | 0 人回复 | 2023-09-12

我在尝试 Go 执行简单的除法。+ g7 ^; I7 C: C; Y7 X0 r: R0 ]' f
    fmt.Println(3/10)
      i# n' A/ D3 ^
这将打印 0 而不是 0.3.这有点奇怪。有人能分享这背后的原因吗?Go 执行不同的算术操作。
7 P4 `5 X$ ^7 V谢谢
" F" ^( e4 ^. l! s- Q                                                                8 I1 s% a0 [! k& k& ]
    解决方案:                                                                2 J% r% B2 }; i6 s  ?
                                                                表达式3 / 10是一种无类型的常量表达式。规范 说这是关于常量表达式的
1 b- _/ [% n: Z3 |! i3 z3 I& V+ x- i如果二元运算的操作数是不同类型的无类型常量,则使用该列表背后的类型:整数、符文、浮点数和复数。% |/ ^! ^5 B0 A- X& `- O2 V* E
因为3和10是无类型整数常量,表达值是无类型整数(0在这种情况下)。
5 K6 i, o9 W4 U: l& v操作数之一必须是浮点常量,结果是浮点常量。以下表达式计算为无类型浮点常量0.3:
  c8 X! l. r2 [# x" l& ^
    3.0 / 10.03.103 .0! J( w1 l) m2 S* ?0 P
也可以使用类型化常量。以下表达式计算为float64常量0.3:9 N! r- `# r$ J" n, `  ?2 v' k0 ^; W
    float64(3) / float64(10)float64(3) / 103 / float64(10). s! z5 _4 c7 d
上述任何表达式打印0.3. 例如,fmt.Println(3.0 / 10打印0.3.
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则