将值从float64更改为String以加倍。最终价值会改变吗?

时间:2016-01-19 05:51:45

标签: java python casting

我在pythong中生成“float64”类型的数字。它也可以是负数。 np.random.uniform(low=-1, high=1, size=dims), dtype='float64')

然后我迭代列表并将每个值x作为字符串写入文本文件。

with open(simulated_data_file, 'a') as data_file_writer:
    data_file_writer.write(str(x)+"\n")

现在我将其作为String读取,并使用Double.parseDouble(inputFeatureStringArray[i])

将其转换为Java中的double

我想知道在任何情况下,python中生成的初始值在Java中会有所不同。

1 个答案:

答案 0 :(得分:0)

首先,所有数字都是Python中的任意精度。这有时会产生有趣的结果,但可能不会在这里。

其次,我希望你重新检查一下你的问题:"如果我用Python在一个文本文件中写一个数字,我会用Java获得相同的数字吗?"。

您正在Python中通过某种方式生成数字。当您告诉Python打开文件以便以文本模式写入时,对该缓冲区的任何后续写入都明确要求将字符串(或bytes-ish)对象作为参数。

现在你有一个文本文件,其中包含代表数字的ASCII或UTF-8数字字符串。

当Java打开此文件进行读取时,它可能会返回一个字符串(或bytes-ish)对象。为了在Java中将此字符串用作数字,您需要使用Java的atoi版本,它将尝试将字符串解析为数字文字。

TL; DR:您的问题与数字和特定语言sizeof无关,只与字符串有关。由您来确保Python以Java可以读取的方式编写文本(不是那么难,我向您保证)。

如果要将表示数字的word或bytes-ish对象写入文件对象作为字节对象:即数字的文字二进制表示(不会产生文本文件) ),那么你可能会遇到一些问题,因为所有的Python数字,如上所述,BigIntegers,基本上都是。