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

如何在Julia v1.0.3中将浮点转换为整数,julia,Julia,我正在尝试转换float: xmax = maximum(x_holder)-30 convert(Int32, xmax) 但是,我得到以下错误: 错误:LoadError:不精确错误:Int32Int3230525.8 堆栈跟踪: …当我试图转换它时。我做错了什么?我已经看过医生了,他们没有帮我 正如DNF在评论中正确指出的那样,在进入Int32的过程中不需要通过Int64 使用trunc怎么样 根据相关具体示例进行更新 使用地板 或者使用trunc 正如DNF在评论中正确指出的那样,在进

我正在尝试转换float:

xmax = maximum(x_holder)-30
convert(Int32, xmax)
但是,我得到以下错误:

错误:LoadError:不精确错误:Int32Int3230525.8 堆栈跟踪:

…当我试图转换它时。我做错了什么?我已经看过医生了,他们没有帮我


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

使用trunc怎么样

根据相关具体示例进行更新

使用地板

或者使用trunc


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

使用trunc怎么样

根据相关具体示例进行更新

使用地板

或者使用trunc

或者可能:

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

xmax = toInt(maximum(x_holder)-30)
或者可能:

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

xmax = toInt(maximum(x_holder)-30)

就这么简单:

round(Int32, xmax)
您可以提供各种不同的整数类型T,如roundT、xmax,只要它们有意义,并且转换工作正常。如果您想要不同的舍入行为,请改用地板或天花板

这比Int32roundxmax更可取,Int32roundxmax通过首先生成一个四舍五入的浮点值,然后将其转换为Int32来进行解游程。当然比convertin32、roundInt、xmax要好得多,这是一个非常奇怪的解决方案

编辑:如果不清楚,顺便说一句,您需要将round函数的输出分配给一个新变量。输入将不会在适当位置四舍五入:


就这么简单:

round(Int32, xmax)
您可以提供各种不同的整数类型T,如roundT、xmax,只要它们有意义,并且转换工作正常。如果您想要不同的舍入行为,请改用地板或天花板

这比Int32roundxmax更可取,Int32roundxmax通过首先生成一个四舍五入的浮点值,然后将其转换为Int32来进行解游程。当然比convertin32、roundInt、xmax要好得多,这是一个非常奇怪的解决方案

编辑:如果不清楚,顺便说一句,您需要将round函数的输出分配给一个新变量。输入将不会在适当位置四舍五入:



julia>y=30525.8 julia>floory 30525.0 julia>typeofy float64这不会转换它,即使我创建了新的变量,它们也会是float。您需要指定“convert…”的返回值,请参阅更新example@DNF我完全同意。我被convert的OPs使用所吸引,并希望提供一个使用它的解决方案,但这显然不是一条路要走。更新了答案julia>y=30525.8 julia>floory 30525.0 julia>typeofy float64这不会转换它,即使我创建了新变量,它们也会是float。您需要指定“转换…”的返回值,请参阅更新example@DNF我完全同意。我被convert的OPs使用所吸引,并希望提供一个使用它的解决方案,但这显然不是一条路要走。更新后的answer30525.8不是整数值浮点,因此无法转换为整数。我不知道你在这里期待什么。正如答案所示,您需要首先将其转换为不带小数部分的浮点数,通常使用floor、round或ceil来完成,具体取决于您尝试执行的操作的上下文。注意,使用?floor查看这些功能是如何工作的。如果需要方法签名FloorPrint,xInt3210.0可以正常工作,但Int3210.05无法正常工作。您需要知道如何处理0.0530525.8不是整数值的浮点,所以不能转换成整数。我不知道你在这里期待什么。正如答案所示,您需要首先将其转换为不带小数部分的浮点数,通常使用floor、round或ceil来完成,具体取决于您尝试执行的操作的上下文。注意,使用?floor查看这些功能是如何工作的。如果需要方法签名FloorPrint,xInt3210.0可以正常工作,但Int3210.05无法正常工作。您需要了解如何处理0.05I正在尝试使用此格式,它适用于Int64,32,16,但不适用于Int8。我知道我的结果会很小,我想把记忆减到最小。少了什么?为什么它不能转换成Int8?你想取整什么数字?有点复杂,这是我的代码roundInt8,floorrandTruncatedNormal150,20,50250。出于某种原因,其他整数长度可以工作吗?谢谢。我离我的电脑很远,所以无法检查,但可能您试图取整的数字对于Int8来说太大了。你能试试truncInt8,x吗?我正在尝试使用这种格式,它适用于Int64,32,16,但不适用于Int8。我知道我的结果会很小,我想把记忆减到最小。少了什么?为什么它不能转换成Int8?你想取整什么数字?有点复杂,这是我的代码roundInt8,floorrandTruncatedNormal150,20,50250。出于某种原因,其他整数长度可以工作吗?谢谢。我离我的电脑很远,所以c 不检查,但可能您试图取整的数字对于Int8来说太大了。你能试试truncInt8,x吗?
round(Int32, xmax)
julia> xmax = 30525.8
30525.8

julia> xnew = round(Int32, xmax)
30526

julia> typeof(xnew)
Int32

julia> typeof(xmax)  # <- still the same
Float64