草庐IT

LATITUDE_DECIMAL

全部标签

Python:为什么数学模块中的函数接受 Decimal 对象作为参数?

奇怪的是,Python的数学模块中的每个函数似乎都适用于Decimal对象。例如:frexp、exp、cos。当我键入print(math.frexp(decimal.Decimal('2341.12412')))时,Python打印出正确答案,即(0.57156...,12),并且不会抛出任何异常。我假设数学模块将用低级C编写,尽可能依赖硬件数学运算来提高效率。那么...为什么它适用于Decimal对象?他们是否对数学函数进行了类型检查,并在参数为Decimal时切换到不同的实现?我没有看到文档中提到的任何内容。也可能是小数自动转换为float,但这也没有任何意义。是的,我很困惑。

python - 将非常小的 python Decimal 转换为非科学记数法字符串

我正在使用PythonDecimal类进行精确的浮点运算。我需要将结果编号一致地转换为标准符号编号作为字符串。但是,默认情况下,非常小的十进制数以科学记数法呈现。>>>fromdecimalimportDecimal>>>>>>d=Decimal("0.000001")>>>dDecimal('0.000001')>>>str(d)'0.000001'>>>d=Decimal("0.000000001")>>>dDecimal('1E-9')>>>str(d)'1E-9'如何让str(d)返回'0.000000001'? 最佳答案

python - Django——删除模板中 Decimal 的尾随零

有没有办法从django模板中的Decimal字段中删除尾随零?这是我拥有的:0.0002559000,这是我需要的:0.0002559。有答案建议使用floatformat过滤器来做到这一点:{{balance.bitcoins|floatformat:3}}但是,floatformat执行四舍五入(向下或向上),这在我的情况下是不需要的,因为我只需要删除尾随零而不进行任何四舍五入。 最佳答案 解决方案是使用normalize()方法:{{balance.bitcoins.normalize}}

python - Python Decimal 对象中 NaN 后数字的含义

我在decimal.Decimal的文档中阅读了有效十进制字符串语法的词法定义。以下内容让我感到有些奇怪:nan::='NaN'[digits]|'sNaN'[digits]这对我来说真的很奇怪,但显然可以在“NaN”之后包含数字而没有任何问题,但是“NaN”之后除数字之外的任何字符都会引发InvalidOperation。>>>Decimal('NaN10')Decimal('NaN10')所以我有几个问题:NaN中的数字是什么意思?带有数字的NaN实例的行为与“普通”NaN有何不同?除了以这种方式初始化之外,还有其他方法可以获取带数字的NaN吗?除了Decimal类之外,Pytho

python - 在 python 中获取 Decimal 的 Ceil()?

有没有办法在python中获取高精度Decimal的ceil?>>>importdecimal;>>>decimal.Decimal(800000000000000000001)/100000000000000000000Decimal('8.00000000000000000001')>>>math.ceil(decimal.Decimal(800000000000000000001)/100000000000000000000)8.0数学舍入值并返回非精确值 最佳答案 获取Decimal实例x上限的最直接方法是使用x.to_in

python - 在 Python 中,如何在脚本而不是解释器中使用 decimal 模块?

我正在使用Python2.5.4并尝试使用decimal模块。当我在解释器中使用它时,我没有问题。例如,这有效:>>>fromdecimalimport*>>>Decimal('1.2')+Decimal('2.3')Decimal("3.5")但是,当我输入以下代码时:fromdecimalimport*printDecimal('1.2')+Decimal('2.3')在一个单独的文件(称为decimal.py)中并将其作为一个模块运行,解释器提示:NameError:name'Decimal'isnotdefined我也试过将这段代码放在一个单独的文件中:importdecima

Python Decimal - mili (10e-3) 和 micro (10e-6) 的工程符号

这是困扰我的例子:>>>x=decimal.Decimal('0.0001')>>>printx.normalize()>>>printx.normalize().to_eng_string()0.00010.0001有没有办法用工程符号来表示mili(10e-3)和micro(10e-6)? 最佳答案 这是一个明确执行操作的函数,并且还支持对指数使用SI后缀:defeng_string(x,format='%s',si=False):'''Returnsfloat/intvalueformattedinasimplifiedeng

python - 为什么 'decimal.Decimal(1)' 不是 'numbers.Real' 的实例?

我尝试检查一个变量是否是任意类型(int、float、Fraction、十进制等)。我遇到了这个问题及其答案:Howtoproperlyusepython'sisinstance()tocheckifavariableisanumber?但是,我想排除复数,例如1j。类(class)numbers.Real看起来很完美,但它为Decimal返回False数字...fromnumbersRealfromdecimalimportDecimalprint(isinstance(Decimal(1),Real))#False矛盾的是,它与Fraction(1)一起工作得很好例如。docume

python - 如何对 python Decimal 进行语言环境格式化并保持其精度?

如何使用区域设置格式化Decimal?为了举例说明,我试图定义一个函数f,这样在美国英语语言环境中:f(小数('5000.00'))=='5,000.00'f(小数('1234567.000000'))=='1,234,567.000000'一些不起作用的东西:f=str不使用语言环境;f(小数('5000.00'))=='5000.00'f=lambdad:locale.format('%f',d)不保留小数精度;f(十进制('5000.00'))=='5000.000000'f=lambdad:locale.format('%.2f',d)使用固定精度,这不是我想要的;f(十进制(

flutter : Keyboard without decimal point

我需要一个只有数字(没有小数点)的numberInputKeyboard。我已经尝试使用keyboardType:TextInputType.numberWithOptions(decimal:false)但这仍然对我没有帮助 最佳答案 一个答案建议使用BlacklistingTextInputFormatter,这在您使用英语语言环境的情况下肯定有效。然而,这可能不适用于其他使用,而不是.作为十进制分隔符的语言环境。所以我建议使用WhitelistingTextInputFormatter:import"package:flutt