跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 编程里一个简单的数学问题?
未分類
4 11 月 2020

编程里一个简单的数学问题?

编程里一个简单的数学问题?

資深大佬 : nutting 3

小数,比如 0.1,0.05 ,0.37 ,0.005 ,想让他变成整数,第一个需要乘以 10,后两个需要乘 100,最后乘 1000,怎么计算出来是 10,100,1000,也就是有几位小数?通过代码实现,难道只能转字符数位数?
大佬有話說 (11)

  • 資深大佬 : pdszhmilo

    是的。字符串判断

  • 資深大佬 : th00000

    如果这些数字来源是业务的话, 看业务对应的小数点最多到多少, 不太离谱的话递归乘以是 10 也可以

  • 資深大佬 : AllenHua

    除了字符串

    试试普通的循环? 乘以 10 得到整数 break ;没有的话 继续乘以 100,得到整数 break; 没有的话 继续乘以 1000…… 如此以往 break 的时候 乘了多少就是要的结果

  • 資深大佬 : misdake

    对于正数,取以 10 为底的对数,比如 log10(0.05)=-1.30103,需要+2 才能大于 0,所以是小数点后第二位
    用这种数学方法的话,不同的计算方式可能有误差,需要注意,0.3-0.2=0.09999999999999998

  • 資深大佬 : misdake

    @misdake 看错问题了,刚才以为是求最高位在第几位。
    求位数的话,我想就不断乘以 10 判断还有没有小数。

  • 資深大佬 : 0x2CA

    其他回答的是可以实现的,但是有一些特殊情况,有一些编程语言有设计缺陷,比如 0.1+0.02 可能会变成 0.12000000000001,想自动化是不靠谱的,你需要了解你的编程语言有没有这些陷阱

  • 資深大佬 : QingchuanZhang

    while(abs(x-floor(x))) > eps:
    x *= 10

  • 資深大佬 : llej

    “`javascript
    String(0.005).split(‘.’)[1] * (10 ** String(0.005).split(‘.’)[1].length )
    “`

  • 資深大佬 : yonoho

    转字符串应该是最合适的,重复乘 10 不好,可能出现精度问题。

  • 資深大佬 : ssynhtn

    如果你的小数是浮点数,用位运算提取出这个浮点数 2 的幂次就可以了

  • 資深大佬 : wangtian2020

    转字符串,看小数点后长度是多少

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具