Tag: 浮点

Python的Excel浮点差异很大

我使用下面的代码来计算Python中的平方根: from math import * #find average of two numbers def average(a, b): print "the average is",(a + b) / 2.0,"\n" return (a + b) / 2.0 #guess not good enouhgh def improve(guess, x): print "improved guess is ",average(guess, x/guess),"\n" return average(guess, x/guess) #As long as the guess is not good enough, keep on improving […]

如何在Python中将float转换为timedelta秒?

你如何实例化一个datetime.timedelta在Python中的秒数? 例如,43880.6543 编辑(根据OP的说明) :我有一个Excel工作表,其中一个单元格显示43880.6543(当格式是通用)而不是date。 我如何将这个值在Python中的datetime时间?

浮点精度视觉基本

我想知道如何在计算pi时获得更多的视觉基本数字。 这是我的代码: Dim enne, phi As Double phi = 1 Console.WriteLine("Insert numble of cycles") enne = Console.ReadLine For i = 0 To enne phi = 6 + ((2 * enne + 1) * (2 * enne + 1)) / phi enne = enne – 1 Next phi = phi – 3 Console.WriteLine("pi is") Console.WriteLine(phi) Console.WriteLine("normal […]

Excel的工作表比较运算符是否给出不一致的结果?

考虑以下。 在一个单元格中放置=400000000000000/3 ,如“A1”。 Excel显示133333333333333.0000 。 精度是小数点右边的零位,因为显然Excel的浮点精度不超过15位。 现在将下面的公式放在单元格中: =A1=ROUND(A1,0) 由于小数点右边没有数字,所以公式会生成True …或者在那里? 打开VBA编辑器,在“项目”窗格中右键单击工作簿,然后插入VBA模块。 定义以下UDF: Function Equals(dblOne As Double, dblTwo As Double) As Boolean Equals = dblOne = dblTwo End Function 现在回到工作表并将下面的公式放在一个单元格中: =Equals(A1,ROUND(A1,0)) 结果现在是False 。 为什么?

两个十进制浮点数在单元格中变成许多小数

我有一个NameValueCollection值为.22。 该值被加载到一个float fValue 。 写入Excel时,debugging时的值为fValue = 0.22。 InvoiceWs.Cells["I" + iRow.ToString()].Style.Numberformat.Format = "$#,##0.00"; fValue = float.Parse(nvcUnitPrice["LG3000"].ToString()); InvoiceWs.Cells["I" + iRow.ToString()].Value = fValue; 当我打开Excel文件时,我看到的值是0.219999998807907,我无法弄清楚发生了什么事情。 有任何想法吗?

Excel求解器和VBA:约束中的浮点数/十进制数被错误地转换为整数?

我正在Excel 2007和2010下运行VBA脚本,这些脚本涉及使用内置的Excel求解器进行的大量优化。 什么是指定十进制约束的正确方法,如X> = 0.0001,其中X将是问题的决策variables。 SolverAdd CellRef:=cells(5,5), Relation:=3, FormulaText:="0.0001" 或者我必须删除引号“”? Solver的VBA接口是否允许使用十进制(非整数)约束呢? 我在问,因为有时我得到(未经证实)的感觉,认为> = 0.0001的约束被错误地解释为> = 1,这当然会产生错误的结果。 如果有人能够为我澄清这些问题,那将是非常好的。 史蒂夫

OleDB的Jet – Float读取Excel数据的问题

当我使用OleDbDataReader将表单读入一个DataTable时,浮点数字将失去精度。 我试图迫使OleDb作为string读取Excel数据,但是虽然数据现在包含在一个DataRow中,每个列定义为System.String它失去了精度(18.125 – > 18.124962832)。 任何想法如何避免这种行为?

所有系统的浮点操作都是一样的吗?

我们正在PHP中制作这个networking应用程序,并且在报告中使用Excel文件来比较我们的结果,以确保我们的编码正在做正确的操作。 现在我们正在运行浮点算术的一些差异。 我们正在进行相同的划分和乘法运算,而且运行的数量略有不同,加起来就有明显的差别。 我的问题是,如果Excel正在委托它的浮点运算的CPU和PHP也是依靠CPU的操作。 还是每个应用程序都实现了自己的一套mathalgorithm?

Microsoft ACE驱动程序在我的程序的其余部分中更改了浮点精度

在使用Microsoft ACE驱动程序打开Excel电子表格之后,我遇到了某些计算结果更改的问题。 下面的代码重现了这个问题。 前两个DoCalculation调用产生相同的结果。 然后我调用OpenSpreadSheet函数,它使用ACE驱动程序打开和closuresExcel 2003电子表格。 您不希望OpenSpreadSheet对最后一次调用OpenSpreadSheet有任何影响,但事实certificate结果实际上发生了变化。 这是程序生成的输出: 1,59142713593566 1,59142713593566 1,59142713593495 请注意最近3位小数的差异。 这似乎没有什么太大的差别,但是在我们的生产代码中,计算是复杂的,所得到的差异是相当大的。 如果我使用JET驱动程序而不是ACE驱动程序,则没有区别。 如果我将types从double改为decimal,错误就会消失。 但是在我们的生产代码中这不是一个选项。 我在Windows 7 64位上运行,程序集是为.NET 4.5 x86编译的。 我们正在运行32位Office,因此使用64位ACE驱动程序不是一个选项。 有谁知道为什么会发生这种情况,我该如何解决? 以下代码重现了我的问题: static void Main(string[] args) { DoCalculation(); DoCalculation(); OpenSpreadSheet(); DoCalculation(); } static void DoCalculation() { // Multiply two randomly chosen number 10.000 times. var d1 = 1.0003123132; var d3 = 0.999734234; double […]

为什么Excel不按照8字节的IEEE 754进行轮换

以下expression式在C#中的计算结果为false : (1 + 1 + 0.85) / 3 <= 0.95 因为(1 + 1 + 0.85) / 3评估为大于0.95 0.95000000000000007 ,所以在大多数实现IEEE 754的其他编程语言中,这是这样做的。 但是,即使Excel也应用了大部分IEEE 754 ,Excel 2013中的以下评估为TRUE: = ((1 + 1 + 0.85) / 3 <= 0.95) 有什么具体的原因吗? 上面链接的文章没有提到可导致此行为的任何自定义的Excel实现。 你可以告诉Excel要严格按照IEEE 754标准吗? 请注意,尽pipe大多数Excel问题都应该在superuser.com上提出,但这个问题涉及浮点运算,这是编程语言中的一个常见问题。 从这个问题的主题来看,Excel是一种像C#或Java这样的编程语言。