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