- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
float = 11.0000123456789
我想将上面的 float 四舍五入为 11.00001235。因此,我希望 float 的基数部分四舍五入为 4 位数字,同时忽略并保留前导零并在末尾加回尾数。
我有以下内容,它简短而有趣,但感觉有点像解决方法。
import decimal
decimal.getcontext().prec = 4
significand, base = str(11.0000123456789).split('.')
fp = significand + str(decimal.Decimal('.' + base) + 0)[1:] # I need to add 0 here for it to work
print(fp)
我真的找不到我的具体问题的答案。我想知道实现此目标的最 pythonic 方法是什么,或者我所拥有的是否足够体面。我觉得有点粗制滥造。
编辑:前导零的数量未知,我为示例选择了四个。所以我认为字符串格式不会起作用。
最佳答案
我认为这是解决您的问题的最pythonic 方法。试试这个,
>>> import re
>>>
>>> float_val = 11.0000123456789
>>> keep_places = 4
>>>
>>> regEX = f'[0-9]+\.[0]+{"[0-9]" * keep_places}'
>>> expected_val = re.search(regEX, str(float_val)).group()
>>>
>>> print(expected_val)
'11.00001234'
最简单的方法是创建 Regular expression operations,这就是我用它来解决您的问题的方法。让我们把它分成 4 个部分。
[0-9]+
\.
[0]+
[0-9] * keep_places
(1)。 [0-9]
表示只选择 0 到 9 之间的一位数字。我们需要小数点前的多位数字。这就是我们添加 [0-9]+
的原因。如果小数点前没有任何整数,则添加 *
而不是 +
,它会检查零次或多次出现。如果您使用 +
,则意味着您必须具有一个或多个值。
(2)。 .
这个点是一个特殊字符,用于从给定的字符串中选择除换行符以外的任何字符。我们需要捕获小数点,它也是一个点。如果我们的字符串有这些特殊字符(在我们的例子中是小数点),我们使用 \
来匹配这些字符。这就是我们使用 \.
的原因,它现在可以匹配我们的小数点。
(3)。 [0]+
,这将匹配我们字符串中的所有零。
(4)。 [0-9] * keep_places
,这只是一个字符串乘法。对于这个问题 keep_places
是 4
这意味着我们得到这种输出 [0-9][0-9][0-9][0-9]
。但是在 Regular expression operations 中,它只选择四位数字,每个数字都在 0 到 9 之间。还有一点,对于这个问题,使用 [0-9]
或 [1-9]
并不重要。因为我们已经捕获了零,所以它开始从 1
中寻找其他整数。
如果你打印 regEX
,你会看到 [0-9]+\.[0]+[0-9][0-9][0-9][0-9]
类型的字符串。它只匹配 <any_number><dot><all_zeros_before_the__non_zero_integer><4_digit_after_last_zero>
类型的模式。你可以测试这个表达式 online 。
关于python - 将 float 舍入为 n 位数字,忽略前导零并保留它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776723/
我目前有以下选择语句: SELECT CONCAT(TRUNCATE(HOUR("215:00:36")/24,0),":",HOUR("215:00:36")%24,":",MINUTE("215:
我正在尝试将字符串编码为 base36。 static char *decode(unsigned long long value) { char base36[37] = "01234567
如果我有一个输入字符串,input 有三个或更多小数位,我希望该字符串由单独的 if-loop 处理。 我为此目的创建了以下控制台程序,如果(第一个约束)有小数点 .,则输入 if-loop字符串和(
我有一小段代码,它有一个整数数组,其中包含一些前导 0 的元素。 int arr[]={012,234,071}; cout<
如何从强制范围中删除前导,以便 Some field Any 1 2 3 « 最佳答案 删除 vertical-align: middle 后我觉得不错。 .mandato
我有这个 psd 并试图将它转换为 html css。 但是我无法从psd中计算出css中的行高。 如何根据前导+字体大小计算行高? 谢谢 最佳答案 如果行距不是自动的:LineHeight = fo
有谁知道如何更改文本字段上的行高(行距),最好是在 Interface Builder 中? 我已经找了大约一个小时了,但没有找到。 最佳答案 解决方法如下: Resizing NSTextField
是否可以在 C# 中的单元格元素(行)之间添加空格?我正在 Visual Studio 2012 中创建 pdf,并希望在行之间设置一些空间。我有这样的东西: PdfPTable cellTable
是否可以在 C# 中的单元格(行)元素之间添加空格?我正在 visual studio 2012 中创建一个 pdf,并希望在行之间设置一些空间。我有这样的东西: PdfPTable cellTabl
type ApplyFunc func(commitIndex uint64, cmd []byte) []byte 对于这个声明。我的理解是,这是一个函数指针。它的名字是 ApplyFunc。并且此
我很好奇多列索引的前导列的概念。 我正在使用这个示例 dvdrental分贝。 这是查询: SELECT title, length, rating, replacement_cost
我想将一个 double 格式格式化为最大长度为7的字符串,其中包含一个点“.”以及其后一位数字。 例如: 123.4 becomes "00123.4" 12345 becomes "12345
我需要正则表达式的帮助来从字符串中去除不需要的字符(在 Java 中)。我用 4 个正则表达式解决了这个问题。替换将被多次调用 [peeks: 50+ times/sec] 它并降低性能。但我认为它肯
只是将两个值连接到 mysql 表中的一列。 mysql 表中的第一个值和 PHP 常量中的第二个值保存为 define('ACCOUNTCODESUFFIX','016');。 MySql 查询有点
我如何按此顺序返回这些: 1: aaaa 2: bbbb 3: the cccc 4: dddd 所以忽略开头的“the” 目前我正在使用。 select * from houses order by
我通常使用以下代码将 PHP 变量导入 JavaScript: echo("var zipCode = " . $zipCode . ";"); 这工作正常,但对于以 0 开头的邮政编码,它会被 ch
有什么方法可以用前导 0 和小数来格式化 NSNumber 吗?例如,我需要有能力写 4.5 和 000。目前我有它允许小数,但不允许前导 0。 NSNumberFormatter *f = [[NS
你好我正在以编程方式创建标签栏,在我的功能中需要选择填充自定义颜色的标签,到目前为止我已经使用下面的代码实现了这一点,下面的输出见截图。 tabBarController.tabBar.selecti
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Integer with leading zeroes 有人能告诉我这是怎么回事吗?当我用前导零初始化一个
在 Xcode 6 中,我可以使用编辑器菜单来固定: 引领空间至超视 到 Superview 的尾随空间 顶部空间到Superview Superview的底部空间 我找不到在 Xcode 7 bet
我是一名优秀的程序员,十分优秀!