问题描述
我正在编写一个 Julia 程序,其中有一个需要满足以下条件的 Float64 变量 (val
):
(val – m) % s == 0
m
和 s
是存储为字符串的数字,例如:m = "0.00010000"
和 s = "0.00010000"
。
如果我在 Matlab 中进行以下计算:
val = 0.2383;
m = "0.00010000";
s = "0.00010000";
result = mod((val - str2double(m)),str2double(s)) == 0;
disp( result )
答案被评估为真。即满足 (val – m) % s == 0
条件。
然而,当我尝试在同一个程序的 Julia 实现中做同样的事情时,我遇到了问题:
val = 0.2383;
m = "0.00010000";
s = "0.00010000";
result = ((val - parse( Float64,m )) % parse( Float64,s )) == 0;
println( result )
相同计算的 Julia 版本现在变为错误。
这可能是由于浮点舍入错误造成的,例如 Julia 中 val – parse(Float64,m)
的结果是 0.23820000000000002,它不能被 0.0001 整除。
所以我的问题是:在 Julia 中,我如何调整我的计算,以便像在 Matlab 代码中那样满足条件?我能否以不同的方式解析我的 val
/m
/s
变量以避免四舍五入问题?
理想情况下,由于速度问题,我希望避免使用诸如“Decimals”之类的包并坚持使用快速变量类型。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)