使用公制前缀格式化数字? [复制]

2023-11-25

可能的重复:
C# 中的工程符号?

无论是公制前缀优于科学计数法可能有争议,但我认为它有其物理单位的用例。

我环顾四周,但似乎 .NET 没有内置类似的东西,还是我弄错了?任何实现这一目标的方法都可以。

澄清一下:目标是将任何给定数字显示为浮点或整数字符串,其值在 1 到 999 之间以及相应的公制前缀。

e.g.

1000 -> 1k
0.05 -> 50m

经过一些舍入:

1,436,963 -> 1.44M


试试这个。我没有测试过,但它应该或多或少是正确的。

public string ToSI(double d, string format = null)
{
    char[] incPrefixes = new[] { 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y' };
    char[] decPrefixes = new[] { 'm', '\u03bc', 'n', 'p', 'f', 'a', 'z', 'y' };

    int degree = (int)Math.Floor(Math.Log10(Math.Abs(d)) / 3);
    double scaled = d * Math.Pow(1000, -degree);

    char? prefix = null;
    switch (Math.Sign(degree))
    {
        case 1:  prefix = incPrefixes[degree - 1]; break;
        case -1: prefix = decPrefixes[-degree - 1]; break;
    }

    return scaled.ToString(format) + prefix;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用公制前缀格式化数字? [复制] 的相关文章

  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • Paradox 表 - Oledb 异常:外部表不是预期的格式

    我正在使用 Oledb 从 Paradox 表中读取一些数据 我遇到的问题是 当我将代码复制到控制台应用程序时 代码可以工作 但在 WinForms 中却不行 两者都以 x86 进行调试 我实际上只是复制代码 在 WinForms 应用程序
  • 合并字符数组中的最小重复次数

    假设我有两个数组 我想合并它们 以便合并后的数组具有最小重复次数 例如 x x 是重复 arr1 x d d m f m arr2 d d x f f m 唯一的条件是在合并数组中 元素来自arr1 and arr2必须出现在各自的订单中a
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • python中打印字符串的长度

    有没有什么方法可以找到 即使是最好的猜测 Python中字符串的 打印 长度 例如 potaa bto 是 8 个字符len但 tty 上只打印 6 个字符宽 预期用途 s potato x1b 01 32mpotato x1b 0 0mp
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 系统错误 124 - SHFileOperation 的 ERROR_INVALID_LEVEL

    我在使用时遇到问题SHFileOperation SHFileOperation SHFILEOPSTRUCT https stackoverflow com questions 9191415 shfileoperation shfile
  • 正确使用“extern”关键字

    有一些来源 书籍 在线材料 解释了extern如下 extern int i declaration has extern int i 1 definition specified by the absence of extern 并且有支
  • 不兼容的类型 - 是因为数组已经是指针吗?

    在下面的代码中 我创建一个基于书籍结构的对象 并让它保存多个 书籍 我设置的是一个数组 即定义 启动的对象 然而 每当我去测试我对指针的了解 实践有帮助 并尝试创建一个指向创建的对象的指针时 它都会给我错误 C Users Justin D
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 如何使用收益返回和递归获得字母的每个组合?

    我有几个像这样的字符串列表 可能有几十个列表 1 A B C 2 1 2 3 3 D E F 这三个仅作为示例 用户可以从几十个具有不同数量元素的类似列表中进行选择 再举个例子 这对于用户来说也是一个完全有效的选择 25 empty 4 1
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 在 Java 服务器中验证 Windows 用户

    我正在开发一个用 Java 编写的服务器和一个在同一网络上的 Windows 计算机上运行的客户端 用 Net 编写的桌面应用程序 我希望进行一些基本身份验证 以便服务器可以确定运行客户端的用户的用户名 而不需要用户在客户端中重新输入其 W
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 使用 System.Security.Cryptography 将 Win32 Crypto API 调用转换为 C#

    我接到一项任务 要删除我们产品的一个 dll 并将其替换为纯 C 的 dll 旧的 DLL 是 NET 2 0 托管 C C CLI 它包装了对 Win32 本机加密 API 的调用 新的 DLL 应公开具有相同名称和方法的新对象 但应使用

随机推荐

  • 无法在 Ubuntu 13.04 上使用 RVM 安装 Ruby on Rails

    我正在尝试在我的 Ubuntu 机器上安装 RVM 我已经使用curl来获取RVM 但是一些RVM命令 安装 要求 抛出此apt get错误 There has been error while updating apt get pleas
  • Git-2-SVN 迁移?

    是的 我知道 为什么要从 Git 迁移到 SVN 好吧 我碰巧遇到这样的情况 我需要将一个巨大的 Git 存储库迁移到 Subversion 这是我根据埃德温的评论尝试的一个工作流程 首先创建一个本地SVN仓库 svnadmin creat
  • 通过推送通知启动应用程序时进行调试

    我目前正在开发一个接收推送通知的应用程序 我通过 PHP 页面使这一切 100 正常工作 我的应用程序可以接收多种不同类型的推送通知 PHP 处理这个问题并向我的应用程序发送不同的信息包 这些信息包都被很好地接收 但是 当用户 查看 通知并
  • 在类的构造函数中返回一个值

    到目前为止我有一个PHP带有构造函数的类 public function construct identifier NULL Return me if identifier NULL this gt emailAddress identif
  • 在 C++ 中寻找基于 Windows RAM 的共享内存解决方案

    我面临着一种情况 我需要将多达数百兆字节的内存从一个进程传递到另一个进程 现在我正在通过文件来完成它 但速度太慢了 我想为了更快 这些文件应该直接写入 RAM 并且可以从另一个进程访问 不需要花哨的同步 一个进程将创建共享内存对象并用数据填
  • 内容出现在固定标题后面

    我修复了网站的标题部分 但页面的第一个 div 出现在标题后面 而不是从标题的末尾开始 当您申请时position fixed or position absolute该元素将从文档流中删除 因此后面的元素将其视为不存在 这就是为什么你的d
  • 实体框架 nvarchar 外键区分大小写

    我有相当简单的表结构 如下所示 问题对我来说听起来很奇怪 虽然我选择解决这个问题 但想听取专家的意见 我有两张桌子 Users UserName nvarchar 250 Primary Key FirstName nvarchar 50
  • 为什么 Angular 5 中出现错误:没有导出成员“OpaqueToken”。?

    我有一个 Angular 4 应用程序 我正在将其升级到 Angular 5 我收到以下错误 src app application services generated variables ts 1 10 中出现错误 错误 TS2305
  • 处理控制器中的唯一记录异常

    我有一个名为 Subscription 的模型 它在字段 email location 上有唯一的索引 这意味着每个位置都可以通过一个电子邮件地址进行订阅 在我的模型中 class Subscription lt ActiveRecord
  • Angular 1.2 不再允许在同一元素上使用多个独立作用域指令?

    我在 Angular 项目中有一些代码 它们使用两个具有隔离范围的单独指令 它们不需要共享范围 只需存在于同一元素上即可 它们都以稍微不同的方式改变 DOM 并且重要的是绑定到作为参数传递的值 这在 1 0 中有效 但是 Angular 1
  • 即使“plist”中的“UIBackgroundModes”中存在“voip”,iOS 应用程序在 iOS10 中设备重新启动后也不会自动启动

    我需要我的 VoIP 应用程序在重新启动设备后自动启动 苹果文档明确提到 编辑 这是来自苹果官方文档 请在评论或回答没有用户交互或静默推送通知的情况下无法启动应用程序之前先看一下此内容 另请参阅下面的 Github 项目 人们已经验证了这种
  • 更改按键

    在输入框或 contenteditable true div 中 如何修改字母 a 的按键以返回字母 b 的按键 即 每次在 div 中键入字母 a 时 输出实际上是字母 b 我并不关心在 IE 中工作的解决方案 只是在 Safari Ch
  • 条件语句出现在表达式之前还是之后有什么关系吗?

    抱歉 如果这是一个愚蠢的问题 但我是一个在 ruby 中摸索的 C 人 在 ruby 中 我注意到很多人这样做 do something with params if 1 1 那个和这个之间有什么区别 哪怕是轻微的 if 1 1 do so
  • 在哪里可以找到 .cargo/config?

    我里面没有这个文件c user me cargo 如中所述货物文件 没有one的地方 cargo Cargo 允许对特定项目进行本地配置以及 全局配置 如 git Cargo 将其扩展为层次结构 战略 例如 如果调用 Cargo proje
  • 如何使用TIdIMAP4登录Gmail帐户并获取邮箱中的邮件数量?

    如何登录 Gmail 帐户并获取其中的邮件数量INBOX邮箱与TIdIMAP4成分 要获取 Gmail 收件箱中的邮件总数 您需要首先使用您的凭据连接到 Gmail IMAP 服务器 选择 Gmail 收件箱邮箱 然后为该选定邮箱读取Tot
  • 如何对数据库中的用户使用 Windows 身份验证 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我的主要目标是使用 Windows 身份验证来查询我的自定义用户表以通过 Web 应用程序使用 我不确定是否有常规方法可以做到这一点 我在 SQL 数据库中有一个预定义的用户表和
  • String.Format 计算预期参数的数量

    是否可以计算字符串中预期参数 参数的数量String Format 例如 Hello 0 Bye 1 应返回计数 2 我需要在之前显示错误string Format 抛出异常 感谢您的帮助 您可以使用正则表达式 例如 然后只计算匹配项 如果
  • 解压类型列表

    假设我有一个只接受类型模板参数的函数 我无法更改它的定义 实现 template lt typename T gt void do it 现在我有一个以通常的方式定义的类型列表 也无法更改它 template lt typename Ts
  • 如何避免从 URL.getFile() 获取 URL 编码路径?

    我在尝试获取给定资源的路径时遇到以下问题 System out println nf new File getAbsolutePath System out println od new File this getClass getReso
  • 使用公制前缀格式化数字? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的工程符号 无论是公制前缀优于科学计数法可能有争议 但我认为它有其物理单位的用例 我环顾四周 但似乎 NET 没有内置类似的东西 还是我弄错了 任何实现这一目标的方法都可以 澄清一下 目标是将任