首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >常量被截断为整数

常量被截断为整数
EN

Stack Overflow用户
提问于 2013-04-22 23:45:28
回答 1查看 17.3K关注 0票数 11

下面的GO程序给出了错误:

代码语言:javascript
运行
复制
./fft.go:13: constant -6.28319 truncated to integer
./fft.go:13: cannot use -7 * k / N (type int) as type float64 in assignment

程序:

代码语言:javascript
运行
复制
package main

import (
    "math"
    "fmt"
)

func main() {
    fmt.Println("Hello world ",math.E)

    var k, N int = 1, 10
    var ans float64 = 0
    var c float64 = (-2.0 * math.Pi * k) / N
    x := make([]float64,N)
    for i := 0; i < len(x); i++ {
        x[i] = 1
    }
    ans = 0
    for i := 0; i < N; i++ {
        ans += x[i] * math.E
    }
    fmt.Println(ans)
}

为什么不能在float64类型中使用int

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 23:54:37

替换

代码语言:javascript
运行
复制
var c float64 = (-2.0 * math.Pi * k) / N

通过

代码语言:javascript
运行
复制
var c float64 = (-2.0 * math.Pi * float64(k)) / float64(N)

引用spec

当表达式或赋值中混合了不同的数值类型时,需要进行

转换。例如,int32和int不是同一类型,即使它们在特定的体系结构上可能具有相同的大小。

Go使用静态类型,不会在数值类型之间自动转换。原因可能是为了避免一些错误。例如,float64(2.5) * int(2)应该产生什么值和什么类型?结果应该是int(5)int(4)float64(5.0)?在Go中,这不是问题。Go常见问题有关于这个的more to say

@jnml指出,在这种情况下,以下内容就足够了:

代码语言:javascript
运行
复制
var c float64 = -2 * math.Pi / float64(N)
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16151199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档