如何解决通过在 python 3 中导入 libm 来改变舍入模式
我的环境:Ubuntu 18.04、Anaconda、Python 3.6
我正在使用以下代码通过 ctypes 在 python 中导入 libm 以更改浮动类型环境,例如舍入。
@Post()
@Redirect()
public async authenticateUser(
@Body('email') email: string,@Body('password') password: string,@Body('challenge') loginChallenge: string,@Body('remember') remember: string,@Res() res: Response,) {
try {
const redirectUrl = await this.loginService.authenticateUser(
email,password,loginChallenge,remember,);
return {
url: redirectUrl,};
} catch (error) {
return res.render('login',{
challenge: loginChallenge,errorMessage: error && error.message ? error.message : undefined,});
}
}
但是我收到以下错误:
import numpy as np
import ctypes
FE_TONEAREST = 0x0000
FE_DOWNWARD = 0x0400
FE_UPWARD = 0x0800
FE_TOWARDZERO = 0x0c00
#libm = ctypes.CDLL("libm.so",ctypes.RTLD_GLOBAL)
libm = ctypes.cdll.LoadLibrary(r'/usr/lib/x86_64-linux-gnu/libm.so')
v = 1. / (1<<23)
print( repr(np.float32(1+v) - np.float32(v/2))) # prints 1.0
#change mode
libm.fesetround(FE_UPWARD)
print( repr(np.float32(1+v) - np.float32(v/2))) # prints 1.0000002
libm 是 ubuntu 18.04 自带的默认库。
您能否建议导入库的最佳方式是什么?
谢谢。
解决方法
我更改了库路径
来自
/usr/lib/x86_64-linux-gnu/libm.so
到
/lib/x86_64-linux-gnu/libm.so.6
成功了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。