【问题标题】:How to disable scientific notation in .AsString in Delphi?如何在 Delphi 的 .AsString 中禁用科学记数法?
【发布时间】:2011-05-20 20:16:30
【问题描述】:

嗨 我想从数据库中获取数字,例如,如果数据库中的数字是 44.7890000000,我想得到一个字符串 44.789,相同的 0.0010000000 -> 0.001,只需保留数字并修剪尾部的“0”。 我使用这段代码: qrySth.Fields[i].AsString - 它完成了它的工作,但我发现对于非常小的数字,比如 0.0000010000,它变成了 1E-6。有没有办法可以禁用这个 AsString 方法的科学记数法?

谢谢!

【问题讨论】:

  • 我想也许我需要使用 displayformat
  • 您应该将该评论添加为答案,Spspli。
  • 有没有办法我使用AsString,但可以控制其显示为非科学数字?
  • 'DisplayFormat' 不会改变 'AsString' 返回的内容,它只会影响数据感知控件中使用的字段的 GetText 方法。
  • 其他语言相关:HaskellLuaC++ ostreamsDelphi

标签: delphi scientific-notation


【解决方案1】:

作为设置字段的DisplayFormat 属性的替代方法,您可以从AsFloat 读取并将值直接传递给FormatFloat。它使用相同的格式模式。

【讨论】:

  • 如果我使用 AsFloat,由于浮点数表达式的性质,它会给我一个与数据库中不完全相同的数字。会有额外的舍入问题。所以我不想使用 AsFloat
  • 数据库字段是什么类型的? (我不是指 Delphi TField 类。我指的是 DB 模式中的字段。)
  • @spspli - 'AsFloat' 和 'AsString' 都将首先从数据库中检索字段的值,两者都将使用 GetData 方法。你有一个问题,你有两个。 'AsString' 将另外使用FloatToStr 将值转换为字符串,它使用'ffGeneral' 表示FloatFormat 15 位有效数字。
猜你喜欢
  • 2018-07-09
  • 2021-01-27
  • 1970-01-01
  • 2021-05-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2011-07-18
相关资源
最近更新 更多