首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将字符串转换为小数(出错)

将字符串转换为小数(出错)
EN

Code Golf用户
提问于 2020-10-11 13:41:44
回答 35查看 3.4K关注 0票数 24

什么?

许多实用和深奥的编程语言都有函数、方法等,可以将给定的字符串转换为十进制数。这一过程可能是这样运作的:

  • 对于给定字符串中的每个字符。
    • 取字符的ASCII值,减去48。
    • 将输出值乘以10 (第一次迭代时的输出为0)
    • 将减去的ASCII值添加到输出中。

让我们对字符串"109"执行此过程:

  1. 1的ASCII值为49。减去48,得到1,把输出乘以10,得到0。最后,我们将1与0相加,得到一个。
  2. 接下来,我们把0's的ASCII值(48)减去48,得到0。我们乘以1乘以10,得到10。当我们加0时,什么都不会发生。
  3. 然后减去9's的ASCII值(57)乘以48,得到9。我们乘以10,得到100。我们把9乘以100,得到109。

在那里,我们成功地将"109"转换为109个!这也一样简单!

问题是,当转换字符串具有非数字字符时,大多数语言都不喜欢它( ASCII值不包括在48-57范围内的字符)。他们很可能会向我们扔一些令人讨厌的错误或异常。

我们还是忽略它吧!

任务

给定来自STDIN的可打印字符串(可以假设为1 ≤ \text{Input Length} ≤ 10),实现一个程序或函数,按照上述步骤将其糟糕地转换为整数,并输出或返回它。

字符串可以包含空格字符(空格、制表符和行提要)。

另一个例子是字符串"Hi!"

  1. H的ASCII值为72: 72 - 48 = 24 0 * 10 = 0 0 + 24 = 24
  2. i的ASCII值为105: 105 - 48 = 57 24 * 10 = 240 240 + 57 = 297.
  3. !的ASCII值为33: 33 - 48 = -15 297 * 10 = 2970 2970 + -15 = 2955

这意味着转换为整数的"Hi!"是2955!

适用标准I/O规则。

注意:如果你的语言不支持输入,欢迎在你的答案中告诉我(你可以把“输入”字符串放在你的源代码中)!

更多测试用例

代码语言:javascript
运行
复制
STDIN                  Output
"123456789"         ->  123456789
"0123456789"        ->  123456789
"-12345"            -> -287655
"Lorem"             ->  350191
"Ipsum"             ->  321451
"AAAAAAAA"          ->  188888887
"        "          -> -177777776
"A"                 ->  17
" "                 -> -16
"
"                   -> -38

标准密码-高尔夫规则适用!

EN

回答 35

Code Golf用户

发布于 2020-10-11 14:04:43

果冻,5字节

代码语言:javascript
运行
复制
O_48Ḍ

在网上试试!

是如何工作的

代码语言:javascript
运行
复制
O_48Ḍ - Main link. Takes a string s on the left
O     - Convert to ordinal code points
 _48  - Subtract 48 from each
    Ḍ - Convert from base-10
票数 11
EN

Code Golf用户

发布于 2020-10-12 16:14:11

马蒂尔,8字节

只要我们做错了事情,为什么不把字符串转换成多项式呢?

代码语言:javascript
运行
复制
48-[X]ZQ

在网上试试!

求多项式

p_1x^{n-1} + \cdots + p_{n-1}x^1 + p_nx^0

其中p是输入字符串(减去'0'),x是10。

票数 10
EN

Code Golf用户

发布于 2020-10-12 07:25:09

诗意,153个字节

代码语言:javascript
运行
复制
decoding a num got WRONG
I/O digits i get?converting fails,o darn
i am bummed if the I/O fails
i have a number i got based on counting it badly,i suppose

在网上试试!

票数 8
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/212305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档