当正数生成正数时,math.sqrt域错误

时间:2017-08-30 16:30:41

标签: python windows python-3.x

当正方形生成正数时,我收到域错误。它最初发生在一个复杂的程序中,但我能够像下面这样简单地重现错误:

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中工作,这似乎是阻止它工作的问题。

1 个答案:

答案 0 :(得分:1)

从评论中复古:

  1. 试试
  2. import ctypes
    msc = ctypes.windll.msvcrt
    msc.sqrt.restype = ctypes.c_double
    msc.sqrt.argtypes = [ctypes.c_double]
    msc.sqrt(1.3)
    

    (事实证明问题出在msvcrt.dll中)

    1. 尝试使用sfc工具(参见https://answers.microsoft.com/en-us/windows/forum/windows_10-update/downloaded-windows-10-msvcrtdll-missing-message/87d48295-2969-4f62-88cd-7d0030946099?auth=1
      • 左键单击“开始”按钮。
      • 右键单击“命令提示符(管理员)”选项,您可以选择“以管理员身份运行”。
      • 弹出命令提示符窗口。
      • 键入:SFC / SCANNOW并按Enter键。