If you are running 32-bit 3.6 on Windows, please test this

Pavol Lisy pavol.lisy at gmail.com
Fri Sep 1 03:24:36 EDT 2017


On 8/31/17, 20/20 Lab <lab at 2020fresno.com> wrote:
>
>
> On 08/31/2017 01:53 AM, Pavol Lisy wrote:
[...]
> Valid point, fired up a windows 10 machine and worked as well.
>
> Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit
> (Intel)] on win32
> Type "copyright", "credits" or "license()" for more information.
>  >>> import math
>  >>> math.sqrt(1.3)
> 1.140175425099138
>  >>>
>
> This machine does not have the creators update yet.  So there's that.
> --
> https://mail.python.org/mailman/listinfo/python-list

Thx! :)

Could somebody help me?

I was trying to call sqrt using ctypes from msvcrt but I am not succesful:

import ctypes
msc = ctypes.windll.msvcrt

def msqrt(arg):
    s = ctypes.create_string_buffer(100)
    d = ctypes.c_longdouble(arg)
    msc.sprintf(s, b'arg = %g', d)
    print(s.value.decode())
    r = msc.sqrt(d)
    msc.sprintf(s, b'sqrt = %g', r)   # r is int so this format is
wrong I just like to show my intention
    print(s.value.decode())
    print("r = ", r, r.__class__)

>>> msqrt(1.3)
arg = 1.3
sqrt = 0
r =  0 <class 'int'>

>>> msqrt(-1)
arg = -1
sqrt = 4.00144e-320   # because wrong format in sprintf
r =  8099 <class 'int'>

And ->

>>> msc.sqrt.restype
ctypes.c_long

>>> msc.sqrt.argtypes is None
True

How to do it properly? Isn't ctypes broken?



More information about the Python-list mailing list