如何在Julia v1.0.3中将浮点数转换为Int

时间:2019-03-21 20:47:08

标签: julia

我正在尝试转换浮点数:

xmax = maximum(x_holder)-30
convert(Int32, xmax)

但是,出现以下错误:

  

错误:LoadError:InexactError:Int32(Int32,30525.8)   堆栈跟踪:

...当我尝试将其转换时。我究竟做错了什么?我已经看过文档了,他们没有帮助我。

docs link

3 个答案:

答案 0 :(得分:3)

如DNF在评论中正确指出的那样,在进入Int32的过程中无需经过Int64

如何使用trunc

x = 3.141592653589793238462643383279502884197
print(trunc(Int32, x)) // print 3
print(typeof(trunc(Int32, x))) //prints Int32

已根据具体示例进行了更新

使用floor

x = 3.141592653589793238462643383279502884197
xmax = maximum(x)-30
xmaxconverted = floor(Int32, xmax) // -26
print(typeof(xmaxconverted)) // prints Int32

或使用trunc

x = 3.141592653589793238462643383279502884197
xmax = maximum(x)-30
xmaxconverted = trunc(Int32, xmax) // -27
print(typeof(xmaxconverted)) // prints Int32

答案 1 :(得分:1)

或者也许:

toInt(x) = Int(floor(x))

xmax = toInt(maximum(x_holder)-30)

答案 2 :(得分:1)

就这么简单

    @Mapping(target = "id", ignore = true)
    B bdtoToB(Adto a, Bdto b);

您可以提供各种不同的整数类型round(Int32, xmax) (如T),只要它们有意义,并且转换有效即可。如果您希望采用不同的舍入方式,请改用round(T, xmax)floor

这比ceil更好,后者先走了一个四舍五入的浮点,然后将其转换为Int32(round(xmax)),从而绕了弯。并且肯定比Int32好得多,这是一个非常奇怪的解决方案。

编辑:如果不清楚,顺便说一句,您需要将convert(Int32, round(Int, xmax))函数的输出分配给新变量。输入将不会被四舍五入的

round