11

math.ceilnumpy.ceilについては知っていますが、どちらもsignificanceパラメーターが不足しています。たとえば、Excelの場合:

=Ceiling(210.63, 0.05)->210.65

一方、numpy.ceilとmath.ceil:

numpy.ceil(210.63)->211.0

math.ceil(210.63)->211.0

それで、私は疑問に思います、Excelのソリューションに似たものはすでにありますか?

4

3 に答える 3

11

そうするためのPython関数はわかりませんが、簡単にコーディングできます。

import math

def ceil(x, s):
    return s * math.ceil(float(x)/s)

両方の引数が整数の場合、整数の除算を回避するために、Python2ではfloatへの変換が必要です。を使用することもできますfrom __future__ import division。これは、Python3では必要ありません。

于 2011-10-06T09:03:28.833 に答える
0

あなたにできることはこれです。

ceil = lambda x,y: math.ceil(x*(1.0/y))/(1.0/y)

しかし、それは絶対確実ではありません。

于 2011-10-06T09:04:05.313 に答える
0

Pythonで多くのExcel数式を実装しているライブラリはたくさんあります。

PyCel、Formulas、xlcalculator、KoalaなどのライブラリはASTを使用してExcelの数式をPythonに変換するため、通常、さまざまな程度の「Excelが物事を計算する方法」(他の場所で行われる方法とは対照的に)に関数の既製のPython実装があります)。少なくとも、これらの関数を実装する方法、または関数がすでに定義されている関数を使用する可能性がある方法についてのアイデアがあります。

私はxlcalculatorのプロジェクト所有者なので、そのライブラリをデモンストレーションで使用します。そうは言っても、他のライブラリはこの特定のタスクを十分に実行できます。各ライブラリにはさまざまな遺産があるため、さまざまな長所があり、さまざまなExcel機能をサポートしています。

通常、上記のライブラリはExcelファイルを読み取り、数式をPythonに変換してから、評価する機能を提供します。Xlcalculatorは、私がここで利用している特別に細工されたdictを解析することもできます。

stackoverflow.py:

input_dict = {
        "Sheet1!A1" : "=Ceiling(210.63, 0.05)"
    }

from xlcalculator import ModelCompiler
from xlcalculator import Model
from xlcalculator import Evaluator

compiler = ModelCompiler()
my_model = compiler.read_and_parse_dict(input_dict)
evaluator = Evaluator(my_model)

print("Sheet1!A1", evaluator.evaluate("Sheet1!A1"))

結果;

>python stackoverflow.py
Sheet1!A1 210.66
于 2020-12-02T07:54:51.580 に答える