我正在尝试转换浮点数:
xmax = maximum(x_holder)-30
convert(Int32, xmax)
但是,出现以下错误:
错误:LoadError:InexactError:Int32(Int32,30525.8) 堆栈跟踪:
...当我尝试将其转换时。我究竟做错了什么?我已经看过文档了,他们没有帮助我。
答案 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