当正方形生成正数时,我收到域错误。它最初发生在一个复杂的程序中,但我能够像下面这样简单地重现错误:
Microsoft Windows [Version 10.0.16251.1002]
(c) 2017 Microsoft Corporation. All rights reserved.
C:\Users\Adam>python
Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
>>> math.sqrt(1.3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
我从版本3.6.1升级到3.6.2尝试解决问题并重新启动计算机但它仍在发生。有些数字正在发挥作用(1.2,1.4),其他一些数字也不起作用(1.128)。
我正在处理的代码是在Ubuntu中工作但在Win10中工作,这似乎是阻止它工作的问题。
答案 0 :(得分:1)
从评论中复古:
import ctypes
msc = ctypes.windll.msvcrt
msc.sqrt.restype = ctypes.c_double
msc.sqrt.argtypes = [ctypes.c_double]
msc.sqrt(1.3)
(事实证明问题出在msvcrt.dll中)