回答

收藏

如何在 Go 中执行除法

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

我在尝试 Go 执行简单的除法。6 I$ m; z5 Q" y1 ^7 X3 c
    fmt.Println(3/10)' w" P% t0 ^  J5 T
这将打印 0 而不是 0.3.这有点奇怪。有人能分享这背后的原因吗?Go 执行不同的算术操作。/ X- k# T4 W7 X2 K6 \
谢谢* C) \3 M; z3 A
                                                                8 e$ h6 f' f5 h! L7 S) Y
    解决方案:                                                                ! L7 g, @9 P4 F" M% q* N
                                                                表达式3 / 10是一种无类型的常量表达式。规范 说这是关于常量表达式的5 @0 U; }: o1 W$ A% I3 u% d& L
如果二元运算的操作数是不同类型的无类型常量,则使用该列表背后的类型:整数、符文、浮点数和复数。
0 |* E2 D7 E+ E# |) C因为3和10是无类型整数常量,表达值是无类型整数(0在这种情况下)。
: \1 o& w. `( k, W1 U; m$ O! ?! ~操作数之一必须是浮点常量,结果是浮点常量。以下表达式计算为无类型浮点常量0.3:
4 h2 Y) O- g6 U! d- Z- \
    3.0 / 10.03.103 .0- A. J9 z+ v/ z* [; h' ]
也可以使用类型化常量。以下表达式计算为float64常量0.3:
  j5 @2 K% a: E( k! o% m+ ?" a! h
    float64(3) / float64(10)float64(3) / 103 / float64(10)  @: p' o+ T& ~: m. S; D
上述任何表达式打印0.3. 例如,fmt.Println(3.0 / 10打印0.3.
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则