标签: casting

将 BigDecimal 对象转换为双精度值

我正在使用 jdbc 连接查询数据库:

    List<Map<String, Object>> rows = jdbcTemplate.queryForList(SELECT_QUERY);   
    for(Map row : rows) {
        Results result = new Results();
        result.setResultValueDouble((Double)row.get("AMOUNT"));

        //add the data object to the list
        resultList.add(result);
    }
Run Code Online (Sandbox Code Playgroud)

但是,我查询的对象是 BigDecimal,我想将其转换为普通双精度。使用强制转换不起作用并给我一个ClassCastException.

有什么建议如何正确地投射这个对象吗?

感谢您的回复!

java double casting bigdecimal

-1
推荐指数
1
解决办法
1万
查看次数

C 是否仍然将两个 `int` 的乘积转换为相同大小的 `int`?

如果有人能给我指点权威参考文献(我很难找到),我将不胜感激。

在古代:

int32_t a, b;
int64_t c;
c = a*b;
Run Code Online (Sandbox Code Playgroud)

这段代码没有做我想要的,因为结果a*b仍然是一个 32 位字,它被符号扩展到 64 位c. 我知道我可以在乘法之前转换ab转换int64_t为,但这是在深度嵌套的 DSP 算法中,我不想浪费执行符号扩展的机器指令,我不希望机器执行 64x64乘。

在现代 C 编译器中执行此操作的正确且有效的方法是什么?

c types casting

-1
推荐指数
1
解决办法
83
查看次数

从另一种接口类型转换接口

我有一个通用函数,用于将目标设置为从地图中提取的值。目前,我对该函数支持的所有类型都有一个很大的难看的 switch 语句,但想知道是否有任何方法可以根据另一个接口的底层类型转换接口。

两个接口的类型不直接相关,这增加了复杂性。目标接口是另一个接口的引用(例如,如果目标是 *int,则另一个接口应转换为 int)。不要担心不遵循此模式的示例。

以下是我正在使用的功能:

    if iface, isSet := config[name]; isSet {
        if convert != nil {
            var err error
            if iface, err = convert(iface); err != nil {
                return err
            }
        }

        var isType bool
        switch target := target.(type) {
        case *string:
            *target, isType = iface.(string)
        case *bool:
            *target, isType = iface.(bool)
        case *int:
            *target, isType = iface.(int)
        case **int:
            *target, isType = iface.(*int)
        case *[]string:
            *target, isType = iface.([]string)
        case *strslice.StrSlice:
            *target, isType = iface.([]string)
        case …
Run Code Online (Sandbox Code Playgroud)

casting type-inference interface go

-1
推荐指数
1
解决办法
54
查看次数

动态类型转换为变量类型

假设,我有一个类,例如:

struct A
{
  uint8_t f1;
  int16_t f2;
};
Run Code Online (Sandbox Code Playgroud)

我需要从内存缓冲区数据中设置它的成员值,例如:

uint8_t * memory=device.getBufferedDataFromDevice();

A a;
a.f1=*((uint8_t*)&memory[someAddress]);
a.f2=*((int16_t*)&memory[someOtherAddress]);
Run Code Online (Sandbox Code Playgroud)

但我想让它更灵活,并避免显式类型转换,以便有可能在不更改其余代码的情况下更改声明中的类型。当然,我可以通过以下方式实现它:

memcpy((void*)&a.f1, (void*)&memory[someAddress], sizeof(A::f1));
Run Code Online (Sandbox Code Playgroud)

但我也想避免为简单类型调用函数,如 1-4 字节长整数(我有),因为简单的赋值可以编译为单个 CPU 指令。请指教,实现这一点的C++方式是什么?

谢谢!

c++ types casting

-1
推荐指数
1
解决办法
96
查看次数

为什么这些未对齐的指针引用有效?

在 Rust 中,将 a 转换*const u8为 a*const T是可以的,但取消引用强制转换指针是不安全的,因为指向的内存可能不满足T大小、对齐和有效字节模式的要求。我试图提出一个违反对齐要求的示例,但满足其他两个要求。

因此,我生成一个 7 的随机切片u8,并尝试将不同的长度为 4 的子切片解释为 f32 值。任何字节模式都是有效的 f32 ,而 4 u8 是无效的size_of::<f32>()。因此,唯一变化的是子切片指针的对齐方式,该指针从基本切片偏移:

slice:        [ 0 | 1 | 2 | 3 | 4 | 5 | 6 ] 
sub-slices:   [ 0   1   2   3 ]
                  [ 1   2   3   4 ]
                      [ 2   3   4   5 ]
                          [ 3   4   5   6 ]
Run Code Online (Sandbox Code Playgroud)

这是我运行的代码

use std::mem::transmute;
use std::ptr::read;
use std::convert::TryInto;
//use rand::Rng; …
Run Code Online (Sandbox Code Playgroud)

casting alignment rust

-1
推荐指数
1
解决办法
987
查看次数

强制转换double时的类转换异常

我尝试运行以下代码.它编译,但抛出ClassCastException.如果有人能帮助我找出原因,我会很高兴的.

double costprice = 0;
Object[] possibilities = null;
costprice = (double) JOptionPane.showInputDialog(
                    alphaPOS,
                    "Cost Price:",
                    "Enter Values",
                    JOptionPane.PLAIN_MESSAGE,
                    null,
                    possibilities,
                    "");
Run Code Online (Sandbox Code Playgroud)

java double casting joptionpane

-2
推荐指数
1
解决办法
107
查看次数

将URL对象转换为HttpURLConnection

我是java新手,我还在处理基本主题.通过调用URL.openConnection()并将结果转换为HttpURLConnection,我无法理解以下行在获取新的HttpURLConnection时如何工作.

URL url = new URL("http://www.android.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
Run Code Online (Sandbox Code Playgroud)

如果URL类不从HttpURLConnection继承,如何使用URL对象实例化HttpURLConnection?

根据java API参考,这是两个类的层次结构:

Java.lang.Object⇒java.net.URLConnection⇒java.net.HttpURLConnection

java.lang.Object⇒java.net.URL

据我所知,铸件的使用方式如下:

在这种情况下,HttpURLConnection是URLConnection和Object的后代.因此,HttpURLConnection是一个URLConnection,也是一个Object.

反过来不一定正确:URLConnection可能是HttpURLConnection,但不一定如此.所以你必须使用铸造.

但URL类和HttpURLConnection不相关.只有通过OBJECT类.

这是我无法理解的.有人能帮我吗?

先感谢您.

java url android casting httpurlconnection

-2
推荐指数
1
解决办法
1708
查看次数

防止将对象转换为除一种类型C++之外的任何对象

我定义了这个类:

template <class T>
class pure
{
public:
    pure(T const& attr) {
        this->attr = attr;
    }

    ~pure() {}

    T& operator=(T const& attr) {
        return attr;
    }

    operator T() {
        return this->attr;
    }

private:
    T attr;
};
Run Code Online (Sandbox Code Playgroud)

这是一个存储类型值的类T.当我想使用它的一个实例时,我得到attr(通过强制pure转换T)而不是实例(of pure)本身.

我的目标是使不能铸造比的类型以外的任何类型的类attr,它是T.

c++ casting

-2
推荐指数
1
解决办法
86
查看次数

无法将'string'类型转换为'System.Windows.Forms.Button'

foreach(Control c in tabAppreciation.Controls)
        {
            if(c is Button)
            {
                if((Button)c.Text.ToString()==0)
                {
                    c.BackColor = Color.Green;
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我收到此错误:无法将类型'string'转换为'System.Windows.Forms.Button'

我想比较每个按钮的文字和一些东西,如果匹配,改变按钮的颜色,但似乎我没有正确做到...有人可以帮助我吗?

c# casting visual-studio-2013

-2
推荐指数
1
解决办法
1146
查看次数

使用%d类型转换会导致输出值不正确

在我最近编写的一个程序中,我遇到了一个相当奇怪的错误,经过大量研究,我无法弄清楚它为什么会发生.我使用printf显示一个字符串,后跟一个整数到stdout.这看起来像是一个想法:

printf("The number of characters on the screen is %d", &numberofchar); 
Run Code Online (Sandbox Code Playgroud)

很标准吧?该变量被声明为一个整数并初始化为1.循环后,整数保持正确的值,例如3,在调试中我可以确认变量在printf语句中赋值.

但是从stdout读取时的输出是一个很大的随机数,例如2530801.

我想了解为什么会发生这种情况并知道是否有任何替代方案,例如使用%i阻止此错误发生.我想象它在堆栈中的某种错误,但我对C的了解并不是太深入.

谢谢您的帮助.

注意:这适用于所有printf("%d", &int_variable)用于在程序中输出整数的实例.所有整数的值总是小于20.

c printf casting

-2
推荐指数
1
解决办法
71
查看次数