首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在工程表示法中格式化[双精度]浮点数

如何在工程表示法中格式化[双精度]浮点数
EN

Stack Overflow用户
提问于 2017-11-28 23:55:10
回答 1查看 167关注 0票数 0

如何在工程符号中格式化双精度浮点数?

代码语言:javascript
复制
PS> Engr(10e-8)
100 nano

PS> Engr(10e-7)
1 micro
EN

回答 1

Stack Overflow用户

发布于 2017-11-28 23:55:10

代码语言:javascript
复制
function Engr([double] $d) {
    [double] $exponent = [Math]::Log10([Math]::Abs($d))
    if ([Math]::Abs($d) -ge 1) {
        switch([int][Math]::Floor($exponent)) {
            0  {return $d.ToString()}
            1  {return $d.ToString()}
            2  {return $d.ToString()}
            3  {return ($d / 1e3).ToString()  + "k"}
            4  {return ($d / 1e3).ToString()  + "k"}
            5  {return ($d / 1e3).ToString()  + "k"}
            6  {return ($d / 1e6).ToString()  + "M"}
            7  {return ($d / 1e6).ToString()  + "M"}
            8  {return ($d / 1e6).ToString()  + "M"}
            9  {return ($d / 1e9).ToString()  + "G"}
            10 {return ($d / 1e9).ToString()  + "G"}
            11 {return ($d / 1e9).ToString()  + "G"}
            12 {return ($d / 1e12).ToString() + "T"}
            13 {return ($d / 1e12).ToString() + "T"}
            14 {return ($d / 1e12).ToString() + "T"}
            15 {return ($d / 1e15).ToString() + "P"}
            16 {return ($d / 1e15).ToString() + "P"}
            17 {return ($d / 1e15).ToString() + "P"}
            18 {return ($d / 1e18).ToString() + "E"}
            19 {return ($d / 1e18).ToString() + "E"}
            20 {return ($d / 1e18).ToString() + "E"}
            21 {return ($d / 1e21).ToString() + "Z"}
            22 {return ($d / 1e21).ToString() + "Z"}
            23 {return ($d / 1e21).ToString() + "Z"}
            default {return ($d / 1e24).ToString() + "Y"}     
        }
    }
    elseif ([Math]::Abs($d) -gt 0) {

        switch ([int][Math]::Floor($exponent)) {
            -1  {return ($d * 1e3).ToString()  + "m"}
            -2  {return ($d * 1e3).ToString()  + "m"}
            -3  {return ($d * 1e3).ToString()  + "m"}
            -4  {return ($d * 1e6).ToString()  + "µ"}
            -5  {return ($d * 1e6).ToString()  + "µ"}
            -6  {return ($d * 1e6).ToString()  + "µ"}
            -7  {return ($d * 1e9).ToString()  + "n"}
            -8  {return ($d * 1e9).ToString()  + "n"}
            -9  {return ($d * 1e9).ToString()  + "n"}
            -10 {return ($d * 1e12).ToString() + "p"}
            -11 {return ($d * 1e12).ToString() + "p"}
            -12 {return ($d * 1e12).ToString() + "p"}              
            -13 {return ($d * 1e15).ToString() + "f"}
            -14 {return ($d * 1e15).ToString() + "f"}
            -15 {return ($d * 1e15).ToString() + "f"}
            -16 {return ($d * 1e15).ToString() + "a"}
            -17 {return ($d * 1e15).ToString() + "a"}
            -18 {return ($d * 1e15).ToString() + "a"}
            -19 {return ($d * 1e15).ToString() + "z"}
            -20 {return ($d * 1e15).ToString() + "z"}
            -21 {return ($d * 1e15).ToString() + "z"}
            default {return ($d * 1e15).ToString() + "y"}
        }
    }
    else
    {
        return "0";
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47535721

复制
相关文章

相似问题

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