gpt4 book ai didi

ada - float 到字符串 : Problem with string length

转载 作者:行者123 更新时间:2023-12-04 20:58:11 26 4
gpt4 key购买 nike

我想将浮点值转换为字符串并创建了以下简短示例:

with Ada.Text_IO;

procedure Example is
A : constant Float := -1.234;
B : constant Float := 123_456.789;
C : constant Float := 987.654_321;

package Float_IO is new Ada.Text_IO.Float_IO (Num => Float);

String_Float_A : String := " ";
String_Float_B : String := " ";
String_Float_C : String := " ";
begin
Ada.Text_IO.Put_Line (Float'Image (A));
Ada.Text_IO.Put_Line (Float'Image (B));
Ada.Text_IO.Put_Line (Float'Image (C));

Float_IO.Put
(To => String_Float_A,
Item => A,
Aft => 2,
Exp => 0);

Float_IO.Put
(To => String_Float_B,
Item => B,
Aft => 2,
Exp => 0);

Float_IO.Put
(To => String_Float_C,
Item => C,
Aft => 2,
Exp => 0);

Ada.Text_IO.Put_Line (String_Float_A);
Ada.Text_IO.Put_Line (String_Float_B);
Ada.Text_IO.Put_Line (String_Float_C);
end Example;

我的问题:我需要在调用过程 Put 之前创建具有足够长度的字符串变量。这如何在运行时动态完成?基本上我需要弄清楚点之前的位数。那么足够的字符串长度将是:1(符号)+ Number_Of_Dots + 1(小数分隔符)+ Aft

最佳答案

小数点前的位数可以计算为1加上常用对数(以10为底)的整数部分数字的整数部分。

在 Ada 中:

    N := Integer (Float'Floor (Log (Float'Floor (abs X), 10.0))) + 1;

您的程序必须带有 Ada.Numerics.Elementary_Functions。如果数字为负数,则必须为减号添加一个空格。

如果整数部分为0,则此公式不成立,但N显然为1。

关于ada - float 到字符串 : Problem with string length,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55716010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com